如何使用javascript调用用代码编写的非静态方法?

时间:2011-08-01 10:39:36

标签: c# javascript asp.net json

请帮助我使用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
    }             

1 个答案:

答案 0 :(得分:0)

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

主要用于使用ASP.NET,您不需要任何自定义的JavaScript调用,因为所有必需的javascript都是开箱即用的。 您需要它只需将ScriptManager和UpdatePanel控件添加到页面上,将您的下拉列表放在UpdatePanel中并将AutoPostback设置为true。就这样。之后,您可以使用该下拉列表的服务器端SelectedIndexChanged事件habdler,它将被异步触发。

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

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

实际上AJAX非常棘手:)