2010-07-12 28 views
0

我在Web表單應用程序中有一個靜態頁面方法,我想從它調用私有類級別變量的方法,如下所示。我使用jQuery來調用頁面方法。從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(); 
} 

UPDATE
如果我把它由約翰·桑德斯說,不會用它來從不同的用戶請求相同的情況下,因爲它是一個靜態方法中?

+0

你可以只是過客'userId' ... – 2010-07-12 06:34:09

+0

沒有意義在JavaScript中暴露用戶id用它爲不同的用戶。這將是危險的,因爲任何人都可以通過傳遞隨機userIds – IsmailS 2010-07-12 06:46:35

+0

來激發JavaScript你誤解了我告訴我在網絡方法中傳遞它的點,而不是在JavaScript中... – 2010-07-12 07:11:13

回答

4

你不能。頁面方法是靜態的。您的_catalogBLL是實例成員。

但是,由於您在每個請求中都創建了CatalogBLL的新實例,爲什麼不再這樣做呢?

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

您無法通話,因爲pagemethods是靜態的......

靜態方法僅僅是一個是從它的包含類的任何實例關聯。更常見的選擇是實例方法,該方法的結果取決於它所屬類的特定實例的狀態。

看看約翰saunder的回答..