我需要使用静态WebMethod在用户所在的活动(当前)asp页面中调用非静态方法。我怎么能这样做?
这两种方法都在ASP页面的cs文件中。
public void NormalMethod()
{
txtFindingNum.Text = "Ajax is da bomb";
}
[WebMethod]
public static void MyWebMethod()
{
// This is the part I need help with...
DoIt();
}
答案 0 :(得分:5)
你不能这样做。它甚至没有意义。
页面的实例方法是关于页面的特定实例。当您使用静态Web方法(页面方法)时,没有页面实例。
如果你可以从web方法调用实例方法,那就意味着实例方法应该是一个静态方法。您可以将static
添加到该方法并使其仍然有效吗?如果没有,那么它取决于页面的特定实例,并且当没有实例时你根本无法调用它。
请注意,页面实例仅在其提供的HTTP请求期间存在。当您的客户端代码调用Web服务时,该HTTP请求已经结束,页面实例已经消失。
答案 1 :(得分:2)
你不能这样做,但输入了txtFindingNum.Text字段,你可以在客户端更改它(它也会在回发后保留服务器中的更改),使用js或jq,如下所示:
$("#<%=txtFindingNum.ClientID%>").val("Ajax is da bomb");