javascript - ASP.NET 从 JS AJAX 调用非静态 web 方法

标签 javascript asp.net

<分区>

Possible Duplicate:
Call non-static method in server side(aspx.cs) from client side use javascript (aspx)

下面的代码运行良好

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 
}

我的问题是我是否希望我的 WebMethod 不是静态的, 我如何从 JS 调用它?

[WebMethod]
public FooObj GetFooObj ()
{
    // some code that returns FooObj 
}

最佳答案

不可能 - PageMethods 必须是静态的。

原因很简单——实例(非静态)方法意味着它可以访问页面状态,包括控件。但是,ASP.NET 页面/控件模型需要状态信息( View 状态、事件验证等)来确保控件状态的一致性。但在页面方法的情况下,这是不可能的,因为完整的表单不会被回发(这本质上是 PageMethods/ScriptServices 背后的想法——您只在客户端/服务器之间发送/接收最少的信息)。

要使用实例方法(假设您需要控制访问),您应该使用 UpdatePanel 方式执行 AJAX。

关于javascript - ASP.NET 从 JS AJAX 调用非静态 web 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500136/

相关文章:

javascript - 从 Node 子进程中检索值

javascript - Promise 解决方案不明确的问题

c# - 如何使用其应用程序打开文件(该文件不存在于网络服务器中)?

css - 如何在 asp.NET/css 中淡入淡出文本

c# - 为什么我们需要反射?

javascript - 使用 dojo 或 javascript 检查输入标签中是否设置了属性集

javascript - 在 Chrome 上获取最终生成的 HTML

javascript - 使用 .toISOString() 转换日期什么都不做?

javascript - asp.net - 从弹出窗口显示弹出窗口

asp.net - 从 1.1 版本开始迁移 ASP.net 应用程序的建议