【问题标题】:How to call a non-static method from asp.net code behind using jQuery如何使用 jQuery 从 asp.net 代码后面调用非静态方法
【发布时间】:2012-03-06 04:58:31
【问题描述】:

在 Web 表单中,我有以下 jQuery 设置来调用我的代码隐藏文件中的方法。

 <script src="js/jquery-1.7.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(function () {
            $("#newBtn").click(function () {
                $.ajax({
                    type: "POST",
                    url: "AJAXCaller.aspx/GetTimer",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: true,
                    cache: false

                });
                return false;
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <a href="#" class="link1" runat="server">Click here</a><br /><br />
    <asp:LinkButton ID="newBtn" runat="server" Text="ASP Link" />
    <asp:Label ID="time_lbl" runat="server" />
    </div>
    </form>
</body>

在后面的代码中,我有以下内容:

[WebMethod]
        public void GetTimer()
        {
            time_lbl.Text = DateTime.Now.ToString();
        }

我意识到这目前在当前语法中不起作用。

如果我将它设置为静态,我已经能够访问该方法,但是我不想只返回一个字符串或单个值。我想访问一个方法,该方法反过来访问 Web 服务以返回数据集合。

我想知道是否可以执行类似这样的操作,我可以调用一个方法并让它更新 UI 中的一个字段,例如上面的方法,当调用服务器端脚本时,它会给 UI 一个值对于日期字段?

提前感谢您的任何建议。

【问题讨论】:

  • 您可以使用 WebMethod 的返回值更新 Asp.Net HiddenField,然后您可以从任何其他控件访问它。

标签: jquery asp.net ajax webforms


【解决方案1】:

这根本不可能,因为您无法从服务器端更新 UI 上的任何字段。

不要在 asp 页面中使用 WebMethod,而是使用 Asp.Net webservices 来编写可以使用 ajax 调用的 web 方法。

ajax 方法有一个成功回调,您可以在其中获取服务响应,然后通过使用适当的选择器访问它来更新 UI 字段。

例如

    $(function () {
        $("#newBtn").click(function () {
            $.ajax({
                type: "POST",
                url: "AJAXCaller.asmx/GetTimer",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                success: function(data){
                     $("#ClientIdOftime_lbl").text(data);
                }

            });
            return false;
        });
    });

【讨论】:

  • @ShankarSngoli 谢谢。但是,如果我想更新的不仅仅是一个字段怎么办?您在我的示例中提到了 ui 字段,但是如果我需要引用一个方法,该方法将返回对象中的数据集合,该对象将绑定到中继器、网格等?
  • 您可以从服务器返回任何数据,但不能仅将其用作转发器的数据源。客户端没有中继器,都是标记。
  • 难道不能在服务器调用的方法中处理数据绑定和 UI 更新吗?我想要完成的是调用该方法让它执行它的任务,然后允许该方法绑定和更新控件(通过更新面板)。本质上,有一个 ajax 事件调用一个回发?
  • 在这种情况下使用 ASP.Net UpdatePanel 不要将它与 jQuery ajax 混合使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多