我需要从javscript函数调用服务器端函数。
据我所知,由于JS在客户端上运行,所以这是不可能的,因此只能调用静态函数(不在同一个上下文中)。
我已经在某处读过隐藏按钮方法,隐藏了一个asp服务器端按钮,然后以编程方式从JS中单击它,从而进行回发,然后调用事件处理程序。
关于这种方法的几个问题 -
这种方法有多好?我的意思是,这种方法被广泛使用还是被认为是原始的和旧的?
这种方法的缺点是什么?
我读到的关于这种方法的另一件事是,如果你来使用这种方法,就意味着整个页面逻辑设计出了问题。这在某种程度上是真的吗?是否有更好的方法来解决这个问题?
提前致谢
答案 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
相同。