关于为新项目考虑 Web 表单的具体原因:
1) 如果您使用的是 SharePoint。如今,SharePoint 网站更自然地在其中集成了 Web 表单 Web 部件/页面。 SharePoint 团队希望在未来添加 MVC 支持 - 但如果您的网站/解决方案现在与 SharePoint 集成或即将推出的新版本,您会发现 Web 表单更容易做到这一点。
2) 如果您正在构建一个应用程序,其中现有的服务器控件或一组服务器控件可以帮助提供很多功能。对于许多报告方案(您可以利用图表控件)以及涉及网格的数据编辑方案(您可以利用数据控件)都是如此。还有一组丰富的服务器端控件,其中封装了 AJAX 功能,许多开发人员发现这些控件对常见场景非常有用。
3) 您正在构建应用程序(通常基于 Intranet)的地方,您需要支持旧版浏览器或具有排除现代 JavaScript 框架的严格可访问性要求,因此必须在服务器上放置大量 UI 逻辑。如果您不关心 SEO(因为它是一个 Intranet 应用程序)并且不关心对 HTML 的完全控制,那么使用具有内置功能的控件可以提高工作效率。
就新项目考虑 MVC 的具体原因而言:
1) 如果您正在构建一个面向公众的网站,其中 SEO、语义 URL/HTML 和对 HTML 的完全控制很重要。虽然 ASP.NET 4 确实为 Web 窗体提供了许多新功能来实现这一点 - MVC 仍然提供更多的全面控制。
2) 如果您要使用 TDD 工作流程和/或轻松地对您的应用进行单元测试。虽然您可以将 MVP 模式与 Web 表单一起使用,但 MVC 提供了一种自然支持这一点的核心方法。
3) 如果您想构建一个重型 AJAX 客户端应用程序,那么 MVC 提供的对 HTML/URL 的完全控制可能是一个优势。您仍然可以使用 Web 表单(尤其是使用 ASP.NET 4)来完成此操作 - 但如果您想要完全的客户端 JS 控件,MVC 可能是一个更有吸引力的选择。
4) 如果您希望能够自定义/扩展 Web 框架的几乎每一层,ASP.NET MVC 提供了必要的挂钩。想要一个不同的视图引擎,集成一个 IOC 容器等 - 然后 MVC 提供了一些不错的钩子。
来自 cmets 部分:
http://weblogs.asp.net/scottgu/archive/2010/01/24/about-technical-debates-both-in-general-and-regarding-asp-net-web-forms-and-asp-net-mvc-in-particular.aspx