我不确定这个问题是否已经发布并且我已经检查了建议的SO链接,但似乎没有一个与该问题完全相关。因此,如果有人认为这是一个潜在的重复,请发布建议答案的链接并原谅这篇文章。
可能有多种方法可以解决我的问题,但为了简洁起见,我有一个用户控件,我想对其相应的服务器端方法使用JavaScript或JQuery调用。
例如,假设我的用户控件有一些服务器端代码,例如:
public partial class UserControls_MyControl : UserControl
{
public string ExecuteThis(string someValue)
{
return someValue;
}
}
我想使用JavaScript从用户控件客户端调用ExecuteThis方法。我知道如果它是来自父页面使用其他机制的调用,这是可能的; PageMethods。但是,当客户端和服务器代码都驻留在用户控件中时,如何实现这一目标。
我浏览了一些帖子和参考文章,建议使用WebService代理,并且我已尝试使用AJAX从用户控件客户端脚本调用WebService取得了一些成功。
function MakeWebServiceCall()
{
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/WebServices/MyService.asmx/SomeMethod",
data: "{}",
dataType: "json",
success: function (msg) {
alert(msg.d);
},
error: function(error)
{
alert(error.responseText);
}
});
}
但是如何将WebService调用绑定回用户控件方法?或者甚至可能吗?或者有更优雅的方式吗?
答案 0 :(得分:1)
您必须在页面中使用标记为WebMethod的用户控件的方法,然后该方法将调用您的用户控件方法。
在您的信息页中:
[WebMethod]
public static string ExecuteThis(string somevalue)
{
return userCtrl.ExecuteThis(somevalue);
}
在你的ajax电话中:
url: "/MyPage.aspx/ExecuteThis"