【问题标题】:How can I call a non static method written in code behind using javascript?如何使用 javascript 调用用代码编写的非静态方法?
【发布时间】:2011-08-01 10:39:36
【问题描述】:

请帮助我使用 json 对象从代码后面调用非静态方法。

aspx页面使用如下代码:

 function columnDropdownScript() {
                if (id == "ExpressionsLink") {
                    var dropdown = document.getElementById("<%=ddlTableNames.ClientID%>");
                }

                /

/ Configure AJAX call to server on itemChange of ddlTableNames
                $.ajax({
                    type: "POST",
                    url: "Webtop.aspx/FillColumnDropdown",
                    data: requestTableParameters,
                    //contentType: "plain/text",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        if (id == "ExpressionsLink") {
                            $("#ddlColumnNames").empty();

                            }
                        }
                        //  alert('Check Column DropDown' + msg.d.length);
                    },
                    error: DisplayError //Event that'll be fired on Error
                });

            }                                                                   

以下代码写在aspx.cs页面中

[WebMethod]
    public static List<string> FillColumnDropdown(string selTableName)
    {

       //Code to update Selected Columns in table
    }             

【问题讨论】:

  • 据我了解,您想使用页面上下文 - 其不可能的 cos 页面生命周期未执行,并且 ajax-call 立即传递给此 webmethod。
  • 如果你想访问非静态页面的成员,你必须引起回发(同步或异步)。对于对非静态成员的异步调用,请使用 ASP.NET Ajax。
  • @OneHalfTrackMindMan 您能否发布一个示例代码,说明如何使用 ajax 使其成为可能?
  • 使用 ASP.NET Ajax 最简单的方法是将 ScriptManager 添加到页面上,并通过 UpdatePanel 将要异步使用的控件包装起来。
  • @OneHalfTrackMindMan:用 javascript 不可能吗?

标签: c# javascript asp.net json


【解决方案1】:

由于您想调用页面的实例方法,我相信您想使用其他页面的控件属性或由 ASP.NET 平台(如 ViewState 或其他)提供的功能。但是,当您发出普通的 ajax 请求时,您将无法使用任何这种可能性。 因此,您使用 ASP.NET Ajax 的唯一选择。在这种情况下,页面会经历完整的生命周期,包括在服务器上重新创建所有页面的控件实例、读取 ViewState 等。

大多数情况下,对于使用 ASP.NET,您不需要任何自定义 javascript 调用,因为所有必需的 javascript 都是开箱即用的。 您需要什么,只需将 ScriptManager 和 UpdatePanel 控件添加到页面上,将下拉列表放入 UpdatePanel 并将其上的 AutoPostback 设置为 true。就这样。之后,您可以使用该下拉列表的服务器端 SelectedIndexChanged 事件处理程序,它将被异步触发。

有关使用 UpdatePanel 的更多信息,请点击此链接:Introduction to the UpdatePanel Control

编辑:顺便说一句:如果您只需要 Session 或 Application 状态或 Cache 但没有页面的控件属性和 ViewState 您仍然可以使用普通的 ajax 调用和静态服务器方法。

其实 AJAX 是一件很棘手的事情 :)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多