2015-02-09 41 views
0

代码隐藏:Web方法只有标记为静态的作品,否则不

[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方法的web方法?

回答

1

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

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

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

相关问题