use*_*174 7 javascript asp.net
我有以下代码,工作正常
function getFooObj() {
$.ajax({
type: "POST",
url: "Dummy.aspx/GetFooObj",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert('good');
}
});
}
[WebMethod]
public static FooObj GetFooObj ()
{
// some code that returns FooObj
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我希望我的WebMethod不是静态的,我怎么能从JS调用它?
[WebMethod]
public FooObj GetFooObj ()
{
// some code that returns FooObj
}
Run Code Online (Sandbox Code Playgroud)
Vin*_*ayC 11
不可能 - PageMethods必须是静态的.
原因很简单 - 实例(非静态)方法意味着它可以访问包含控件的页面状态.但是,ASP.NET页面/控件模型需要状态信息(视图状态,事件验证等)以确保控件的一致状态.但是在页面方法的情况下,这是不可能的,因为不会回发完整的表单(这实际上是PageMethods/ScriptServices背后的想法 - 您只在客户端/服务器之间发送/接收最低限度的信息).
对于使用实例方法(假设您需要控制访问权限),您应该使用UpdatePanel方式来执行AJAX.
| 归档时间: |
|
| 查看次数: |
17822 次 |
| 最近记录: |