C# 我可以将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一起引入 因此,现在鼓励混合使用Web表单和MVC(MVC一直在无缝地工作),并模糊了边界。我猜微软认识到需要允许项目慢慢迁移到MVC,或者只根据需要迁移部分,并获得两个方面的最佳效果C# 我可以将ASP.NET MVC与常规ASP.NET Web表单一起使用吗,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我根据客户的要求,用ASP.NET Web表单建立了一个巨大的网站。问题是我发现ASP.NET Web表单有些不直观(仅限于我个人的喜好)。所以我想做的是使用MVC,但我不能指望我的客户为我的完全重写付出时间(他也没有时间) 所以我想问的是,我能不能同时使用ASP.NETMVC和Web表单,并逐渐越来越多地使用MVC?有什么建议吗?2014年更新: Visual Studio 2013使我们更接近ASP.NET没有MVC 项目类型或Web表单项目不再有了,只有ASP.NET。如果 如果您想混合使
MVC项目: 在Web表单中使用MVC已经有相当一段时间了,这当然是可能的,也是一个很好的选择。通过良好的体系结构设计,例如DDD(服务存储库、依赖项注入等),可以轻松地将新功能和页面添加到MVC页面中,旧的内容可以保持原样。在webforms页面中结合MVC也可以很好地工作,尽管JS验证可能存在一些小问题。我强烈推荐它 从创建MVC应用程序(5ATM)开始,然后在基本模板建立并运行之后,在文件夹中添加旧的webforms,这相当容易。这样,您就可以正确地获得新的MVC设置,并保持向后兼容性
- 您可以创建一个MVC项目,只需将所有Webforms页面复制到一个文件夹中即可。(我想也可以升级一个项目)
- 设置路由以忽略URL中具有特定foldername的请求。通过这种方式,MVC和webforms可以一起使用,而不会在URL中遇到麻烦李>
- Asp.net WebForms aspx页面可以驻留在MVC中,只要它们不放在/Views文件夹中
- 使用Razor超越旧语法,您可以轻松定制HTML帮助程序,而且更简洁
- 检查MVC标准和惯例,控制器应该是非常轻量级的。它不是可以包含所需逻辑的代码李>
- 视图包含的内容不应超过表示逻辑(无业务逻辑)
- 一切新事物=>MVC
- 资源、web.config等可供两者使用
- 菜单不使用MVC中的旧站点地图
..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>
.html和webforms代码
$.ajax(…调用MVC操作来填充
此脚本所在的“fillMeFromMVC”div);
这将通过MVC填充页面的一部分,您可以干净地执行MVC,而不用担心webforms中的操作
WebForms与MVC:
至此,您可能已经非常清楚这两种技术之间的差异,但是这里有一个它们之间的比较。它们都有各自的目的和用途。我个人更喜欢MVC,因为我需要做的事情,但是这可能取决于你想要实现什么
如果您在其背后使用SOA,那么webforms和MVC页面都可以使用相同的业务逻辑Webforms在代码都在页面后面并且与UI绑定(没有分离关注点)时可能有害。具有坚实的体系结构和可减少的工作量。
进一步阅读:
我认为你错了,因为MVC
RouteCollection
有一个名为RouteExistingFiles
的设置,默认设置为false
。这意味着,如果您访问一个现有的aspx页面(并且该页面不在“视图”文件夹中(local web.config阻止对文件的直接请求访问),则应将其作为日常网络表单处理。好的,我不完全确定这一点,我编辑了这篇文章。@Iko:如果您不确定,可以对其进行测试,对吗?:)但我不是说在MVC视图中嵌入Web窗体服务器控件。。。我是说web表单页面可以驻留在MVC web应用程序中。所以你显然误解了我的评论,因为你所做的是将WebForms页面与部分Asp.net MVC视图混合在一起。OP问的是另一件事。@RobertKoritnik很高兴知道,所以你可以做相反的事情(MVC页面中的Webforms)。然而,他询问在同一个项目中使用它们。我可以假设,在某个时刻,他可能想要更新页面的一部分,在这种情况下,只需删除webforms部分并用MVC替换它就很简单了。假设有一个臃肿复杂的控件,他可以用MVC来替换,这可以使用我建议的解决方案。他要求我提供一些建议,我以前也这样做过,我认为这是他可能遇到的情况(特别是当他注意到他的偏好是MVC时)。将webforms放在MVC项目的文件夹中听起来是一个干净的解决方案,但我无法理解它在共享资产(如纸条、图像、字体等)方面如何工作。。。此外,在您的解释中,不清楚如何导航到webforms而不显示其con