无法从静态方法访问asp控件,但是当我删除静态时,ajax调用将无法正常工作

时间:2012-12-04 15:55:10

标签: c# asp.net ajax

我有一个名为getPersonInfo的方法,它的标题如下所示:

[WebMethod]
public static Hashtable getPersonInfo(int personID)
{
}

我遇到的问题是这个方法无法访问我的asp.net控件。所以当然我删除了“static”关键字。但是后来我的ajax调用失败了,因为它不再是静态方法了。有什么建议吗?

编辑:在阅读并搜索了一下后,我意识到它不起作用。我要问的是,是否有另一种方式可能得到最终结果,因为现在我不确定如何做到这一点。

2 个答案:

答案 0 :(得分:4)

这根本不可能。

AJAX方法不运行页面生命周期,因此控件实际上并不存在于服务器上。

相反,您需要在客户端上操作页面。

答案 1 :(得分:1)

您需要从客户端将控件的值传递给getPersonInfo方法。例如:如果它的JQuery ajax调用,可以使用“data”属性传递其他参数。当然,需要相应地修改getPersonInfo方法签名。

$.ajax({
url: 'adduser.aspx/getPersonInfo',                        
data: { personID: $('txtPersonId').val() }, //pass additional parameters here
type: "POST",
success: function (template) {
alert('success'); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('error');
}
});