Web方法仅在标记为静态时才起作用,否则不起作用

时间:2015-02-09 17:10:00

标签: javascript c# asp.net asmx

代码隐藏:

[ScriptMethod]
[WebMethod]
public string SavePassword(string password, string username, string resellerId, string isPasswordReset)
{    
    return null; // For example
}

JavaScript的:

$.ajax({
     type: 'POST',
     url: 'login.aspx/SavePassword',
     data: '{"password":"' + passwordInput + '","username":"' + hidusrname + '","resellerId":"' + hidResellerId + '","IsPasswordReset":"' + hidIsPasswordReset + '"}',
     contentType: 'application/json; charset=utf-8',
     dataType: 'json',
     success: function (result) { },
     error: function () { alert('error');
  }

});

public static string SavePassword()有效,public string SavePassword()不起作用。

如果我将webmethod改为静态,那么如果我不这样做就行不通。

如何在我的网页中使用static方法进行webmethod?

1 个答案:

答案 0 :(得分:1)

Web方法必须是静态的。实例Web方法是不可能的。原因在于它们的设计方式。

Web方法没有任何状态,也没有与页面其余部分的任何关系。没有理由通过整个ASP.NET管道来创建页面对象及其生命周期。它们也不需要处理页面对象创建所需的viewstate字段。并且当方法完全脱离页面对象时,必须将它们声明为静态才能正常运行。

作为回报,与常规ASP.NET页面或更新面板相比,Web方法提供了非常好的性能。