TLDR:UpdatePanels还是PageMethods?
据我所知,有三种方法可以构建ASP.NET Web窗体应用程序:
全页同步回发
使用UpdatePanels的部分异步回发
PageMethods(和Web服务方法)和手动JavaScript
(我知道也有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的官方声明和Microsoft员工的(半)官方声明。
最佳答案
就像您确定的那样,我敢肯定,这个问题的答案非常“取决于情况”。但是,当您通过征求Microsoft的正式认可来回避此类问题的主观性时,前MS员工从Microsoft的官方消息来源获得this video怎么样。视频摘要在总结方面做得很好(考虑到摘要,这很好):
第一种方法是使用UpdatePanel,无需在客户端或服务器端编写其他代码。使用UpdatePanel的好处是一切都会自动运行。代价是,在客户端它需要在AJAX请求和响应中包含大量数据,而在服务器上它需要执行整个页面生命周期。第二种方法是使用网络回调,其中需要在客户端和服务器端都编写其他代码。使用网络回调的好处是,在客户端,它只需要很少的数据就可以包含在AJAX请求和响应中,而在服务器上,它只需要执行被调用的服务方法即可。惩罚是编写必要代码所花费的时间和精力。
主观,非官方的观点:
就个人而言,我几乎避免一直使用UpdatePanels。与许多WebForms功能一样,它们使您无法控制,并引入了许多讨厌的标记和多余的(通常是内联)JavaScript,当您拥有功能丰富的现代Web应用程序时,它们可能导致各种意外行为。 PageMethods使您可以根据自己的开发实践来自己控制它。
如果他们不能一起工作,那么,正如我所看到的,归结为一个问题:“我能确定UpdatePanels是否能满足我的需求?”如果不是,则做出您的决定。
据我所知,这两种方法都没有被正式弃用或“建议使用”。
关于c# - 创建ASP.NET Webforms应用程序的官方推荐技术是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23447066/