我正在努力了解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调用。我不知道这是如何运作的。
答案 0 :(得分:2)
听起来你不喜欢微软提供的javascript库,这很好。 UpdatePanel等都有它们的位置,但是我发现当你需要做一些非常简单和直接的事情就像你所描述的一样,通过从Javascript直接调用服务器资源来完成它更简单,更简洁。
有很多方法可以做到这一点,但我喜欢使用jquery的$ .ajax()方法来调用webservice方法(或最近的MVC操作)。如果你愿意研究一些稍微不同的技术,那么blog post会让你体验我正在谈论的内容。
答案 1 :(得分:2)
ASP.NET Ajax有两个主要部分:
首先,您可以选择使用UpdatePanel控件。然而,这仍然会在整个视图状态下通过网络发送大量不需要的数据,您的网页几乎跟随整个页面生命周期,就像普通的回发一样。大多数情况下,我建议不要在生产代码中使用它。
第二部分是一个基于纯javascript的ajax库,带有一丝微软的味道。它与页面生命周期有相似之处,就像pageLoad函数一样,并且很容易学习。
__ doPostBack
当您在页面上放置某些服务器控件(如LinkButton控件)时,会插入该函数。你可以直接从javascript中调用它,但是知道它会导致整页回发到服务器,所以如果你想避免这样做就不要走那条路。
在过去的两年里,我成为了 jQuery 的忠实粉丝,它与ASP.NET和ASP.NET MVC一起运作良好。
我建议你阅读这篇精美的文章,以获取更多相关信息:Using jQuery with ASP.NET Part 2: Making an AJAX Callback to ASP.NET jQuery本身也被微软采用并受到青睐。我强烈建议你看一下它的力量。