使用隐藏按钮从JS调用服务器端功能

时间:2012-02-26 15:42:24

标签: javascript asp.net

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

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

我已经在某处读过隐藏按钮方法,隐藏了一个asp服务器端按钮,然后以编程方式从JS中单击它,从而进行回发,然后调用事件处理程序。

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

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

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

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

  4. 提前致谢

2 个答案:

答案 0 :(得分:1)

您可以手动调用__doPostBack javascript函数手动进行回发。 看看this其他帖子。

答案 1 :(得分:0)

这样做的一个不错的方法是使用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相同。