2010-07-12 3 views
0

J'ai une méthode de page statique dans une application de formulaire Web et je souhaite appeler la méthode sur une variable de niveau classe privée, comme indiqué ci-dessous. J'utilise jQuery pour appeler la méthode page.Méthode de couche logique métier Callling à partir de PageMethods

private readonly ICatalogBLL _catalogBLL = new CatalogBLL(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    _catalogBLL.GetSomething(); 
    } 
} 

[WebMethod] 
public static UpdateSomething(int i) 
{ 
    //Want to do as below. But can't call it from a static method. 
    _catalogBLL.UpdateSomething(); 
} 

MISE À JOUR
Si je l'appelle comme le dit John Saunders, il ne sera pas utiliser la même instance pour les demandes de différents utilisateurs, car il est dans une méthode statique?

+0

vous pouvez l'utiliser pour différents utilisateurs en passant simplement 'userId' ... –

+0

Aucun sens à exposer userId en javascript. Il sera dangereux que tout le monde peut tirer javascript en passant au hasard userIds – IsmailS

+0

vous avez mal compris mon point que je ai dit de le transmettre dans la méthode web et non dans le javascript ... –

Répondre

4

Vous ne pouvez pas. La méthode de page est statique. Votre _catalogBLL est un membre d'instance.

Toutefois, puisque vous créez une nouvelle instance de CatalogBLL à chaque demande, pourquoi ne pas le faire une fois de plus?

[WebMethod] 
public static UpdateSomething(int i) 
{ 
    CatalogBLL catalogBLL = new CatalogBLL(); 
    catalogBLL.UpdateSomething(); 
} 
1

Vous ne pouvez pas appeler parce que PageMethods sont statiques ...

Une méthode statique est simplement celui qui est dissocié de toute instance de classe contenant. L'alternative la plus courante est une méthode d'instance, qui est une méthode dont le résultat dépend de l'état d'une instance particulière de la classe à laquelle elle appartient.

Regardez la réponse de John Saunder ..

Questions connexes