是否有更好的方法通过ASP.Net Web表单中的ajax更新内容而不是更新面板?

时间:2010-08-24 16:18:36

标签: asp.net ajax updatepanel webforms

我认为自己在Web UI开发方面非常了解,在过去的四年里我学到了很多关于ASP.Net Web Forms的知识,但我还没有想出一个通过Ajax更新页面部分的好方法。我已经完成了几种不同的方法,基本上涉及由某种.aspx页面或处理程序加载的用户控件。这种方法效果很好,但并不是很普遍,并且通常会遇到ViewState问题,甚至是任何中等复杂的问题。

我本可以更早地跳到UpdatePanel,但微软的JavaScript代码完全是废话。有没有人有任何好的策略来加载/更新/刷新Web表单的部分而不使用UpdatePanels?或者有没有人有任何关于使用UpdatePanel来解决一些前端代码蹩脚的问题的提示?

更新(澄清)

以下是我想要做的更清楚的示例情况。在我们页面底部附近的主页上,我们有一些不同内容的标签。每个标签的内容正文都有不同的内容,以适应不同的用户类型。在成千上万的主页访问者中,我们每天都可以点击任何标签。尽管有这些数据,我们的经理仍然希望在那里有标签。因为每个选项卡主体中都有很多HTML内容,所以我想在单击选项卡时加载选项卡的内容。解决方案显然是使用ajax;但是,在单击选项卡时,您将HTML /控件放在何处加载HTML。我可以将每个标签的内容放在自己的apsx页面中(例如/ home/tabs1.aspx),但如果我们愿意的话,我们就不能轻易地将内容嵌入到页面中。我可以将内容放在自己的用户控件中并创建一个加载它的HttpHandler或页面,但这会导致在更复杂的页面上查看状态问题。我可以在函数中对HTML进行硬编码,然后在ajax请求调用它时将其设置为文字或在处理程序中返回HTML。每种解决方案都有效。有些人比其他人更理想(第三个是关注的可怕分离,尽管我之前已经看过它)。 UpdatePanel提供了最佳解决方案,因为它们允许您将内容放在标记的正确部分而不使用单独的文件。我与UpdatePanel的问题是他们要求你使用微软的JavaScript库。是否有任何解决方案像UpdatePanel一样工作而不使用UpdatePanels?

其他一些用例,我正在努力解决:

  • 包含内容的页面上的框,但每30秒更新一次
  • 我想在用户将鼠标悬停在某个部分
  • 时加载的大型标头导航菜单
  • 当用户点击链接时,您有一个显示在灯箱中的表单。 (这可能导致查看状态问题)

4 个答案:

答案 0 :(得分:2)

在某些特殊情况下,您可以使用比UpdatePanels更少的请求/响应有效负载来完成异步页面更新。

例如,AjaxControlToolkit提供了几个可以通过非UpdatePanel异步回调更新的组件。例如,CascadingDropDown控件扩展器有助于根据另一个下拉列表中的值过滤一个下拉列表的情况。轻量级扩展器不是将整个表单包装在UpdatePanel中,而是提供了好处。

但是,建议采用一揽子方法很困难,因为每个AJAX场景可能涉及不同的控件,扩展器或JavaScript库(例如JQuery)。

答案 1 :(得分:1)

JQuery似乎是最受欢迎的方式... http://docs.jquery.com/Downloading_jQuery

答案 2 :(得分:1)

我想Jeff Prosise先生的这篇文章对你和所有刚接触AJAX的人都有帮助(它让我很好):

UpdatePanel Tips and Tricks

答案 3 :(得分:-1)

沟渠网表格,切换到MVC :)你不会后悔的。 有一点学习曲线,但如果你的家庭与经典的asp,它不是那么糟糕。

mvc结合强大的JavaScript库,可以提供非常强大(简单)的动态网络应用。