从静态Web方法调用ASP.NET页面非静态方法

时间:2013-08-07 08:06:26

标签: c# asp.net

我需要使用静态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();
    }

2 个答案:

答案 0 :(得分:5)

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

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

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


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

答案 1 :(得分:2)

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

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