使用隐藏按钮从JS调用服务器端函数

Calling server side function from JS using hidden button

本文关键字:调用 服务器端 函数 JS 隐藏 按钮      更新时间:2023-09-26

我需要从javscript函数调用服务器端函数。

据我所知,这是不可能的,因为JS正在客户端上运行,因此只能调用一个静态函数(不在同一上下文中)。

我读过一些关于隐藏按钮方法的文章,即隐藏一个asp服务器端按钮,然后从JS中以编程方式单击它,从而进行回发,然后调用事件处理程序。

关于这种方法的几个问题-

  1. 这种方法有多好?我的意思是,这种方法是被广泛使用,还是被认为是过时的?

  2. 这种方法的缺点是什么?

  3. 我读到的关于这个方法的另一件事是,如果你开始使用这个方法,这意味着整个页面逻辑设计有问题。这在某种程度上是真的吗?有没有更好的方法来处理这个问题?

感谢

您可以通过手动调用__doPostBack javascript函数来手动执行回发。看看另一篇帖子。

一种不错的方法是使用PageMethods。您可以在代码背后声明一个具有属性[WebMethod]的静态方法。这意味着您可以通过客户端的ajax请求来访问它。像这样:

[WebMethod]
public static string GetDate()
{
    return DateTime.Now.ToShortDateString();
}

您必须使用System.Web.Services才能获得属性。

从客户端,您可以使用jQuery:执行类似的操作

$.ajax({
    type: "POST",
    url: "YourPage.aspx/GetDate()",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
        alert(data.d);
    }
});

请注意,ASP.net将向您发送的任何内容添加一个.d对象。

AFAIK这是在客户端和代码绑定之间进行通信的首选方式,而不会触发回发。发生了什么也很清楚。

使用一个隐藏的按钮并通过调用按钮上的click()触发回发,这更"神奇",而且根本不清楚发生了什么。__doPostback也是如此。