Asychnronous Message发送Asp.net
我正在努力了解AJAX的工作原理。 假设我有一个带有按钮的asp.net表单。 然后我有一个包含单列DateTime
的数据库。 当我单击asp.net表单上的按钮时,我想在数据库中插入一个具有当前时间的列。
我将有一个C#事件处理程序:
protected void btnButton_OnClick(Eventargs e, object sender) { //insert DateTime.now into DB //This part is easy }
我希望在表单上发生的是单击按钮而不重新加载表单。 它只会向服务器发送一条消息; 页面没有理由重新加载。 我有什么方法可以做到这一点?
-
我已经仔细研究了AJAX框架,看起来这可以在更新面板中完成,但页面仍然会重新加载,对用户来说就不那么明显了。
-
在javascript中使用__doPostBack调用。 我不知道这是如何工作的。
听起来你偏爱微软提供的javascript库,这很好。 UpdatePanel等都有它们的位置,但是我发现当你需要做一些非常简单和直接的事情就像你所描述的一样,通过从Javascript直接调用服务器资源来完成它更简单,更简洁。
有很多方法可以做到这一点,但我喜欢使用jquery的$ .ajax()方法来调用webservice方法(或最近的MVC操作)。 如果你愿意研究一些稍微不同的技术,那么这篇博文会让你体会到我正在谈论的内容。
ASP.NET Ajax有两个主要部分:
- 基于服务器端控件
- 客户端框架(称为Microsoft Ajax )
首先,您可以选择使用UpdatePanel控件。 然而,这仍然会像完整的视图状态一样通过网络发送大量不需要的数据,您的网页几乎跟随整个页面生命周期,就像普通的回发一样。 大多数情况下,我建议不要在生产代码中使用它。
第二部分是一个基于纯javascript的ajax库,带有一丝微软的味道。 它与页面生命周期具有相似性,如pageLoad函数等,并且非常容易学习。
__doPostBack
当您在页面上放置某些服务器控件(如LinkButton控件)时,将插入该函数。 你可以直接从javascript调用它,但知道它会导致整页回发到服务器,所以如果你想避免它不走那条路。
在过去的两年里,我已成为jQuery的忠实粉丝,它与ASP.NET和ASP.NET MVC一起运作良好。
我建议您阅读这篇精彩的文章以获取更多相关信息: 在ASP.NET中使用jQuery第2部分:对ASP.NET进行AJAX回调 。
jQuery本身也被微软采用和青睐。 我强烈建议你看一下它的力量。