繁体   English   中英

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

[英]Can I use ASP.NET MVC together with regular ASP.NET Web forms

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

所以我要问的是,我可以同时使用ASP.NET MVC和Web表单并逐渐使用MVC吗? 有小费吗?

2014年更新:

Visual Studio 2013使我们更接近One ASP.NET。 不再有MVC项目类型或Web窗体项目,只有ASP.NET。 如果要混合使用Web Forms和Web API或MVC和SignalR,请继续! 您受到鼓励和支持。 NuGet引入了新功能,而不会破坏现有应用程序。

VS 13

因此,现在鼓励将Web窗体和MVC(几乎可以无缝地工作)混合使用,并且模糊了边界。 我猜想MS意识到有必要让项目缓慢地迁移到MVC,或者仅根据需要迁移部分,并获得两全其美。


MVC项目:

将MVC与Web表单一起使用已经有一段时间了,这当然是可能的,也是一个绝佳的选择。 具有良好体系结构设计(例如DDD(服务存储库,依赖注入等))的新功能和页面可以轻松添加到MVC页面中,而旧内容可以保持原样。 在Webforms页面中组合MVC也可以正常工作,尽管JS验证可能存在一些小问题。 我会极力推荐它。

首先创建一个MVC应用程序(5 atm),然后启动基本模板并运行之后,将其添加到文件夹中相当容易。 这样,您可以正确获得新的MVC设置,并且保留了向后兼容性。

  • 您可以创建一个MVC项目,然后将所有Webforms页面复制到一个文件夹中。 (我想可能也可以升级项目)
  • 设置路由以忽略URL中具有特定文件夹名称的请求。 这样,MVC和Web表单可以一起使用,而无需在URL中麻烦。
  • Asp.net WebForms aspx页面可以驻留在MVC中,只要它们不位于/ Views文件夹中即可。
  • 与Razor一起使用旧的语法,您可以轻松自定义HTML帮助器,并且更加简洁。
  • 检查MVC标准和约定,控制器应非常轻巧。 不是背后的代码可以包含所需的逻辑。
  • 视图所包含的内容不应超过表示逻辑(没有业务逻辑)
  • 一切都新=> MVC
  • 资源,web.config等都可以使用
  • 菜单不使用MVC中的旧站点地图

在webforms .aspx页面内使用MVC:

下面的文本旨在演示如何从Webforms页面内部使用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与MVC(代码项目)

ASP.NET WebForms和ASP.NET MVC之间的区别(博客)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM