2013-05-11 32 views
0

我想從客戶端使用ajax/jquery調用用戶控件中的方法。我的AJAX看起來是這樣的:你能從頁面的靜態方法中檢索用戶控件嗎?

function starClick(starIndex) { 
    $.ajax({ 
     type: "POST", 
     url: "ItemPage.aspx/postRatingProxy", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      document.getElementById("testAjax").innerHTML = msg.d; 
     } 
    }); 
} 

我的頁面的方法是這樣:

[WebMethod] 
public static string postRatingProxy() 
{ 
    return .......postRating(); 
} 

那麼用戶控制方法看起來類似:

public static string postRating() 
{ 
    return "git er done"; 
} 

我看到被建議這種方法某處。雖然Im非常遺憾,當它的靜態時,如何從Page方法中檢索UserControl方法。是否有可能從靜態方法中檢索UserControl,或者我是否陷入死衚衕?

回答

0

是否有可能從靜態方法檢索UserControl或 我剛剛遇到死衚衕嗎?

不,這是不可能的。 ASP.NET PageMethod是靜態的,並且不允許您訪問任何用戶控件。這樣做的原因是簡單的。當你用jQuery做AJAX請求時,沒有ViewState被髮送到服務器,因此用戶控制的概念幾乎沒有意義。如果您需要訪問頁面方法中的某個值,請將此值作爲AJAX請求中的參數發送:

data: JSON.stringify({ someParameter: 'some value you could take from wherevr you want' }), 
+0

如果您的權利然後其他人對我撒謊。手指指向 - > http://stackoverflow.com/questions/3392345/using-jquery-ajax-to-call-asp-net-function-in-control-code-behind-instead-of-pag – 2013-05-11 17:06:08

+1

感覺很笨但我明白了。一旦我花了一些時間來解決這個問題,我就馬上回來找出答案。基本上我所要做的只是:調用return USERCONTROLNAME.postRating();因爲它的靜態,你可以直接從課堂上訪問它。對於這個麻煩抱歉,我失敗了。 – 2013-05-11 17:34:42

相關問題