處理此問題的方法是在頁面中使用webmethod,然後直接將值傳遞給控件中的相同簽名的控件方法 - 沒有其他方法可以執行此操作。
換句話說,所有的頁面方法都會調用usercontrol方法,所以它確實很小。如果您對多個子控件具有相同的簽名,則可以傳遞一個參數來告訴頁面方法調用/使用哪一個。
編輯:每個請求(非常非常簡單的例子)。您可以找到其他更復雜的類型傳遞給服務器端方法的示例。例如在此處查看我的答案:Jquery .ajax async postback on C# UserControl
示例: Page method:請注意「靜態」部分。
[WebMethod]
public static string GetServerTimeString()
{
return MyNamespace.UserControls.Menu.ucHelloWorld();
}
用戶控制方法:
$(document).ready(function()
{
/***************************************/
function testLoadTime(jdata)
{
$("#timeResult").text(jdata);
};
$("#testTimeServerButton").click(function()
{
//alert("beep");
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataFilter: function(data)
{
var msg;
if (typeof (JSON) !== 'undefined' &&
typeof (JSON.parse) === 'function')
msg = JSON.parse(data);
else
msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
url: "MyPage.aspx/GetServerTimeString",
success: function(msg)
{
testLoadTime(msg);
}
});
});
});
注::所述dataFilter:通過jQuery
public static string ucHelloWorld()
{
return "howdy from myUserControl.cs at: " + DateTime.Now.ToString();
}
客戶端AJAX功能(數據)...的AJAX的一部分,使得其適用於2.0和3.5 asp.net ajax而不需要更改客戶端代碼。
你有一個如何做到這一點的小例子? – Steven 2010-08-02 23:52:22
謝謝,它適合我。 – 2015-11-26 01:06:15