我应客户的要求构建了一个包含ASP.NET Web表单的大型站点.问题是我发现ASP.NET Web表单有点不直观(仅限我个人品味).所以我想要做的就是使用MVC,但我不能指望我的客户在完全重写时付出我的时间(也没有时间).
所以我要问的是,我可以同时使用ASP.NET MVC和Web表单并逐渐使用MVC吗?有小费吗?
2014年更新:
Visual Studio 2013使我们更接近One ASP.NET.不再有MVC项目类型或Web Forms项目,只有ASP.NET.如果您想混合Web窗体和Web API,或MVC和SignalR,请继续! 我们受到鼓励和支持.NuGet带来了新的特性和功能,而不会破坏现有的应用程序.
VS 13
因此,现在鼓励Web窗体和MVC(几乎已经无缝地工作)的混合,并且边界被混淆.我想MS认识到需要允许项目慢慢迁移到MVC,或者只是根据需要迁移部分,并获得两全其美.
MVC项目:
将MVC与Web表单一起使用已有一段时间,这当然是可能的,也是一个很好的选择.新的功能和页面可以很容易地添加到具有良好架构设计的MVC页面中,例如DDD(服务存储库,依赖注入等),旧的东西可以保持不变.在Webforms页面中组合MVC也可以正常工作,尽管JS验证可能存在一些小问题.我会极力推荐它.
它很容易从创建一个MVC应用程序(5个大气压)开始,然后在你运行基本模板并运行之后在文件夹中添加旧的webforms.这样您就可以正确获得新的MVC设置并保持向后兼容性.
您可以创建MVC项目,只需将所有Webforms页面复制到例如文件夹中.(可能只是升级一个项目,我想)
设置路由以忽略URL中具有该特定foldername的请求.这样,MVC和webforms可以一起使用,而不会在URL中麻烦.
Asp.net WebForms aspx页面可以驻留在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 & webforms code
这将通过MVC填充页面的一部分,您可以干净地完成MVC,而无需担心在webforms中做了什么.
WebForms vs. MVC:
到目前为止,您可能非常清楚这两种技术之间的差异,但是这里有一点比较.他们都有自己的目的和用途.我个人更喜欢MVC来完成我需要做的事情,但这很可能取决于你想要达到的目标.
如果您使用例如SOA,那么webforms和MVC页面都可以使用相同的业务逻辑.当代码全部位于页面后面并与UI关联时(不关注问题),Webforms可能是有害的.凭借可靠的架构和一些可以减少的努力.
进一步阅读:
Webforms与MVC(代码项目)
ASP.NET WebForms和ASP.NET MVC(博客)之间的区别