gpt4 book ai didi

c# - 官方推荐的创建 ASP.NET Webforms 应用程序的技术是什么?

转载 作者:行者123 更新时间:2023-11-30 18:29:10 26 4
gpt4 key购买 nike

TLDR:UpdatePanels 还是 PageMethods?


据我所知,可以通过三种方式构建 ASP.NET Web Forms 应用程序:

  1. 全页同步回发
  2. 使用 UpdatePanel 进行部分异步回发
  3. PageMethods(和网络服务方法)和手动 JavaScript
  4. (我知道也有 ASP.NET MVC,但那不是 Web Forms 系列的一部分。)

我想现在每个人都同意选项 1 不再提供令人满意的用户体验。 (它可能已经工作了一段时间,但 SmartNavigation got deprecated a long time ago 只支持 IE,而且从来没有像它应该的那样稳定。)

问题是选项 2 和选项 3 不能真正协同工作:一旦您尝试使用 PageMethods 做一些不平凡的事情(比如用条目填充列表),the view state breaks ,从而打破现有的“基于 UpdatePanel 的”代码。目前,there's no easy way to work around that .

由于 UpdatePanels 和 PageMethods 似乎彼此非常不兼容,是否有一些官方建议在新项目中使用哪一个?

为了防止这成为一个主观问题,我想将这个问题限制在微软的官方声明和微软员工的(半)官方声明中。

最佳答案

我相信您可以想象,这个问题的答案很大程度上是“视情况而定”。但是,由于您通过寻求 Microsoft 官方认可来回避此类问题的主观性,this video 怎么样?由前 MS 员工提供,来自 Microsoft 官方来源。视频的摘要在总结方面做得相当好(这很好,因为它是一个摘要):

The first method is to use an UpdatePanel, where no additional code needs to be written on either the client side or the server side. The benefit of using the UpdatePanel is that everything works automatically. The penalty is that at the client it requires a lot of data to be included in the AJAX request and response, and at the server it requires a full page lifecycle to be executed. The second method is to use network callbacks, where additional code needs to be written on both the client side and the server side. The benefit of using network callbacks is that at the client it requires very little data to be included in the AJAX request and response, and at the server it requires only the called service method to be executed. The penality is the time and effort it takes to write the necessary code.

主观的,非官方的:

就我个人而言,几乎所有时间我都会避免使用 UpdatePanels;与许多 WebForms 功能一样,它们会夺走您的控制权并引入大量令人讨厌的标记和过多(通常是内联)JavaScript,当您拥有一个现代的、功能丰富的 Web 应用程序时,这可能会导致您出现各种意外行为. PageMethods 让您可以根据自己的开发实践自行控制。

如果它们不能协同工作,那么,正如我所见,问题就来了,“我能确定 UpdatePanels 会给我我需要的一切吗?”如果不是,则由您做出决定。

不过,据我所知,这两种方法都没有被正式弃用或“建议反对”。

关于c# - 官方推荐的创建 ASP.NET Webforms 应用程序的技术是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23447066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com