【问题标题】:Advantages and disadvantages of using Ajax update panels in ASP.NET application在 ASP.NET 应用程序中使用 Ajax 更新面板的优缺点
【发布时间】:2010-11-12 05:11:35
【问题描述】:

在 ASP.NET 应用程序中使用 Ajax 更新面板有哪些优点和缺点。是否有任何替代方法可以避免使用 Ajax 更新面板?

【问题讨论】:

    标签: asp.net ajax updatepanel


    【解决方案1】:

    优点:

    1. 易于使用和配置(嗯,我不知道还有什么其他优点!)

    缺点:

    见here和here
    现在最好的部分是替代方案:

    使用 jQuery 对 Ajax 的内置支持来进行 GET/POST Ajax 调用,它非常简单(比我说的更新面板简单),并且与大多数浏览器完全兼容!
    使用 jQuery 提供的多种简单方法之一进行 Ajax 调用的示例:

      $('#anotherContainer').load('/Home/RegularAjaxResource');
    

    这将简单地调用一个服务器资源(在这种情况下为RegularAjaxResource)并在一个ID为anotherContainer的UI元素上显示它返回的数据

    【讨论】:

    • @7alwagy: 也完全喜欢 jQuery...如果您依赖 webform 的 Viewstates 和 Postbacks,那么非 UpdatePanel 选项会变得非常痛苦...我在下面详细说明了
    【解决方案2】:

    我同意 7alwagy,只是想补充一点。

    如果您想更新/更改控件并且仍然可以在状态控制的 Webforms Postback 模型(尤其是 Viewstate)中工作,则必须使用 UpdatePanel。

    例如:

    如果您在客户端显式使用 JS 更新 DropDownList 控件的值,并且您使用的是内置的 Webforms Postback 模型,则您所做的更改将不会被拾取。

    基本上,如果您依赖内置的 Viewstates,那么您必须使用 UpdatePanel。从技术上讲,您可以不使用它,但您确实必须与框架抗争才能完成任务。

    如果您不依赖 Postbacks 或 Viewstates,那么您完全不需要 UpdatePanel。

    【讨论】:

      【解决方案3】:

      我真的想不出使用更新面板的 1 个好处。他们很悲伤,我发现这很困难。

      它们仅可用于最微不足道的 ajax 效果,如果您要进行任何数据检索或数据库查找,它们在扩展时会遇到很大的问题。 UpdatePanel 令人沮丧,不久我就分享了 updatepanel 的悲痛here、here、here 和here。

      如果这还不足以说服您不要使用 updatepanel,那么什么都不会。

      【讨论】:

      • 我读了你的帖子,他们很虚弱。您只抱怨使用更新面板,但从未解释原因。只有一篇文章提到了将 div 包装在表格中的内容,因为您遇到了一些问题。如果你想不出一个优点,那么你就不知道如何正确使用它们。它们并不完美,但如果使用得当,它们会有很好的用途。如果您的 WebForm 页面依赖于视图状态,那么它们非常有用。
      【解决方案4】:

      我同意更新面板是邪恶的和dangerous,但在某些情况下你可能想要使用它,而不是其他选项。

      • 该页面的 asp.net 控件很少,视图状态也较少。
      • 页面html不太大。
      • 完成任务的时间有限。
      • 性能不是首要问题。
      • 希望通过回发保持控件的状态。
      • 有很多服务器端事件要触发。

      【讨论】:

      • 不同意。我普遍认为这是一个错误。一旦你从一个简单的项目开始了这条道路,你几乎总是把你的手绑在技术上,因为没有人愿意为重写付费,每个用户都会问“你不能 _____________”?
      【解决方案5】:

      优点:

      1. 易于实施
      2. 无需在客户端编写javascript

      缺点

      1. 使用更多带宽,因为所有视图状态都已传输
      2. 应该触发 ajax 调用的元素应该在更新面板内。实际上不可能一直都这样
      3. 更新面板之外的数据不会发送到可能需要进一步处理的服务器。
      4. 实际上,开发人员无法预先确定更新面板中需要包含哪些数据

      【讨论】:

        猜你喜欢
        • 2011-03-10
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多