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