2015-06-16 18 views
-1

我有一個WebMethod,我只想將屬性翻轉爲true。static void c#webmethod無法引用用戶控件?

我把它放在使用C#的.aspx頁面的代碼隱藏中。

public partial class Data : Base 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.bgc1.BGEnabled = false; 
    } 

    [WebMethod(EnableSession = true)] 
    public static void EnableBellows() 
    { 
     this.bgc1.BGEnabled = true;    
    } 
} 

我宣佈在.ascx.cs文件屬性:

private bool _enabled = true; 

public bool BGEnabled 
{ 
    get { return _enabled; } 
    set { _enabled = value; } 
} 

最後,我打電話跟一個jQuery Ajax的帖子將WebMethod。

我收到的錯誤是this在靜態屬性中無效。此錯誤僅在WebMethod中出現,但不在Page_Load中。

我的目標是將BGEnabled翻轉爲true。如果我的方法不正確,我需要做什麼改變?我需要能夠從ajax文章中完成。

+1

靜態方法中不能訪問到對象的範圍內,看到更多的[MSDN](HTTPS:// MSDN .microsoft.com/en-us/library/79b3xss3.aspx) – Grundy

回答

3

我得到的錯誤,這是無效的靜態屬性。

確實。事實上,在這種情況下,這是一種靜態方法。

靜態成員是其中一個與類型有關,而不是與類型的任何實例 - 所以在這裏,我們可以直接調用EnableBellows爲:

Data.EnableBellows(); 

...不會造成任何實例Data。由於this是爲了引用「方法被調用的對象的實例」,它在靜態成員中沒有意義。

您需要考慮數據來自何處,以及您如何處理修改後的數據。請記住,網頁方法是而不是呼叫作爲加載頁面的一部分,因此它無法訪問頁面上的任何控件等。

基本上,我懷疑您需要重新訪問Web方法和ASP.NET頁面的整體概念。

+0

謝謝。因爲我想避免.net回傳很好,所以我的想法有些失落。 – JoJo

+1

嗯,我們不能真正告訴你在這裏嘗試實現什麼,但是,例如,如果要持續更改,您可能需要爲web方法提供* some *上下文。首先要做的是確保你理解這個問題 - 如果你對C#很陌生,我實際上建議暫時放下ASP.NET,並通過控制檯應用程序學習語言的基礎知識。 –

+0

我會用jquery hide()隱藏它謝謝。 – JoJo

1

內部靜態方法只能訪問靜態方法/對象或instancesdeclared靜態方法