2014 年更新:
Visual Studio 2013 让我们更接近 One ASP.NET。 没有 MVC
不再是项目类型或 Web 窗体项目,只有 ASP.NET。如果
你想混合使用 Web 表单和 Web API,或者 MVC 和 SignalR,继续吧!
你受到鼓励和支持。新特性和功能是
在不破坏现有应用程序的情况下通过 NuGet 引入。
VS 13
因此,现在鼓励混合使用 Web 表单和 MVC(几乎可以无缝地工作),并且混淆了边界。我猜 MS 意识到有必要让项目慢慢迁移到 MVC,或者只是根据需要迁移部分,并获得两全其美。
MVC 项目:
已经将 MVC 与 Web 表单一起使用了很长一段时间,这当然是可能的,也是一个很好的选择。新功能和页面可以很容易地添加到具有良好架构设计的 MVC 页面中,例如 DDD(服务存储库、依赖注入等),而旧的东西可以保持原样。在 Web 表单页面中结合 MVC 也可以正常工作,尽管 JS 验证可能存在一些小问题。我强烈推荐它。
从创建 MVC 应用程序 (5 atm) 开始相当容易,然后在您启动并运行基本模板后,将旧的 webforms 添加到文件夹中。通过这种方式,您可以正确获得新的 MVC 设置并保持向后兼容性。
- 您可以创建一个 MVC 项目并将所有 Webforms 页面复制到例如一个文件夹。 (我想也可以升级一个项目)
- 设置路由以忽略 URL 中具有该特定文件夹名称的请求。通过这种方式,MVC 和 Web 表单可以一起使用,而不会在 URL 中出现麻烦。
- Asp.net WebForms aspx 页面可以驻留在 MVC 中,只要它们不放在 /Views 文件夹中。
- 在旧语法上使用 Razor,您可以轻松自定义 HTML 帮助程序,而且更简洁。
- 查看 MVC 标准和约定,控制器应该非常轻量级。它不是可以包含尽可能多的逻辑的代码隐藏。
- 视图不应仅包含表示逻辑(无业务逻辑)
- 一切新 => MVC
- 资源、web.config 等可供双方使用
- 菜单不使用 MVC 中的旧站点地图
在 webforms .aspx 页面中使用 MVC:
下面的文字旨在演示如何从 Web 表单页面中使用 MVC。 (例如在 MyPage.aspx 中)您可以在 Web 表单中使用 MVC 操作/视图,例如ajax 来填充页面的一部分或某些 div。
包含 MVC 的 Web 表单可以正常工作,至少在 HTML 中添加 ajax 调用以填充来自 MVC 的 div 时。
在 .aspx 中
..html & webforms code
<div id="fillMeFromMVC">
<script type="text/javascript">
$.ajax(... call an MVC action to fill
the "fillMeFromMVC" div that this script sits inside of);
</script>
</div>
这将通过 MVC 填充页面的一部分,您可以干净地执行您的 MVC,而不必担心 Web 表单中的操作。
WebForms 与 MVC:
到此为止,您可能已经很清楚这两种技术之间的差异了,但是这里是它们之间的一些比较。它们都有各自的目的和用途。我个人更喜欢 MVC 来完成我需要做的事情,但这可能取决于你想要实现的目标。
如果您使用例如它们背后的 SOA,Web 表单和 MVC 页面都可以使用相同的业务逻辑。 当代码全部在页面后面并且与 UI 相关联(没有关注点分离)时,Webforms 可能是有害的。有了坚实的架构和一些可以减少的工作量。
延伸阅读:
Webforms vs. MVC (Code project)
Difference betweeen ASP.NET WebForms and ASP.NET MVC (a blog)