我可以将ASP.NET MVC与常规ASP.NET Web表单一起使用吗

我根据客户的要求,用ASP.NET Web表单建立了一个巨大的网站。问题是我发现ASP.NET Web表单有些不直观(仅限于我个人的喜好)。所以我想做的是使用MVC,但我不能指望我的客户为我的完全重写付出时间(他也没有时间)

所以我想问的是,我能不能同时使用ASP.NETMVC和Web表单,并逐渐越来越多地使用MVC?有什么建议吗

2014年更新:

Visual Studio 2013使我们更接近ASP.NET没有MVC
项目类型或Web表单项目不再有了,只有ASP.NET。如果
如果您想混合使用Web表单和Web API,或者MVC和SignalR,请继续
你们受到鼓励和支持。新的特性和功能正在开发中
在不破坏现有应用的情况下,与NuGet一起引入

第13节

因此,现在鼓励混合使用Web表单和MVC(MVC一直在无缝地工作),并模糊了边界。我猜微软认识到需要允许项目慢慢迁移到MVC,或者只根据需要迁移部分,并获得两个方面的最佳效果


MVC项目:

在Web表单中使用MVC已经有相当一段时间了,这当然是可能的,也是一个很好的选择。通过良好的体系结构设计,例如DDD(服务存储库、依赖项注入等),可以轻松地将新功能和页面添加到MVC页面中,旧的内容可以保持原样。在webforms页面中结合MVC也可以很好地工作,尽管JS验证可能存在一些小问题。我强烈推荐它

从创建MVC应用程序(5ATM)开始,然后在基本模板建立并运行之后,在文件夹中添加旧的webforms,这相当容易。这样,您就可以正确地获得新的MVC设置,并保持向后兼容性

  • 您可以创建一个MVC项目,只需将所有Webforms页面复制到一个文件夹中即可。(我想也可以升级一个项目)
  • 设置路由以忽略URL中具有特定foldername的请求。通过这种方式,MVC和webforms可以一起使用,而不会在URL中遇到麻烦
  • Asp.net WebFormsaspx页面可以驻留在MVC中,只要它们不放在/Views文件夹中
  • 使用Razor超越旧语法,您可以轻松定制HTML帮助程序,而且更简洁
  • 检查MVC标准和惯例,控制器应该是非常轻量级的。它不是可以包含所需逻辑的代码
  • 视图包含的内容不应超过表示逻辑(无业务逻辑)
  • 一切新事物=>MVC
  • 资源、web.config等可供两者使用
  • 菜单不使用MVC中的旧站点地图

在webforms.aspx页面中使用MVC:

下面的文本旨在演示如何从webforms页面内部利用MVC。(例如在MyPage.aspx中)您可以在webforms中使用MVC操作/视图,例如ajax来填充页面的一部分或某些div

包含MVC的Webforms可以很好地工作,至少在HTML中添加ajax调用以填充来自MVC的div时是这样

在.aspx中

.html&网络表单代码
<div id=“fillMeFromMVC”>
<script type=“text/javascript”>
$.ajax(…调用MVC操作来填充
此脚本所在的“fillMeFromMVC”div);
&lt/脚本>
&lt/部门>

这将通过MVC填充页面的一部分,您可以干净地执行MVC,而不用担心webforms中的操作

WebForms与MVC:

至此,您可能已经非常清楚这两种技术之间的差异,但是这里有一个它们之间的比较。它们都有各自的目的和用途。我个人更喜欢MVC,因为我需要做的事情,但是这可能取决于你想要实现什么

如果您在其背后使用SOA,那么webforms和MVC页面都可以使用相同的业务逻辑Webforms在代码都在页面后面并且与UI绑定(没有分离关注点)时可能有害。具有坚实的体系结构和可减少的工作量。

进一步阅读:

Webforms与MVC(代码项目)

ASP.NET WebForms和ASP.NET MVC(博客)之间的差异

发表评论