2013-08-07 78 views
0

我需要通过使用静态WebMethod来调用用户所在的活动(当前)asp页面中的非静态方法。我怎样才能做到这一点?从静态Web方法调用ASP.NET页面非静态方法

这两种方法都在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

您是否可以将对象的引用传递给需要调用它的方法?您可以将该方法定义为一个界面,以便您可以从多个页面调用它。 – Kalpers

+0

他正在查找的对象不存在。 –

回答

5

你不能这样做。它甚至没有意义。

页面的实例方法是关于页面的特定实例。当您处于静态Web方法(页面方法)时,页面没有实例。

如果你可以从web方法调用实例方法,那就意味着实例方法应该是一个静态方法。你可以只添加static该方法,并使其仍然工作?如果不是,那么它取决于页面的特定实例,并且在没有实例时根本无法调用它。


请注意,页面实例仅在其提供的HTTP请求期间存在。当您的客户端代码调用Web服务时,该HTTP请求已经结束,并且页面实例不见了。

+0

有没有办法访问当前的asp页面实例,所以我可以这样调用它?我试图改变实例方法内的asp控制值,因此我不能使它静态,因为控件不是静态的。 –

+0

There is _is_ no current page instance。 –

2

你不能这样做,但txtFindingNum.Text字段是输入的,你可以在客户端更改它(它也可以在回发后在服务器上保留更改),使用js或jq,如下所示:

$("#<%=txtFindingNum.ClientID%>").val("Ajax is da bomb");