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

标签 c# asp.net .net asp.net-mvc

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

那么我想问的是,我可以同时使用ASP.NET MVC和Web窗体,并逐渐越来越多地使用MVC吗?有什么建议吗?

最佳答案

2014 年更新:

Visual Studio 2013 brings us closer to One ASP.NET. There’s no MVC project type or Web Forms project any longer, there’s just ASP.NET. If you want to mix Web Forms and Web API, or MVC and SignalR, go ahead! You are encouraged and supported. New features and functionality are brought in with NuGet without breaking existing apps.

VS 13

因此,现在鼓励混合使用 Web 窗体和 MVC(它们几乎一直在无缝工作),并且模糊了界限。我想 MS 认识到需要允许项目慢慢迁移到 MVC,或者只根据需要迁移部分,并获得两全其美。


MVC Project:

将 MVC 与 Web 表单一起使用已经有一段时间了,这当然是可能的,也是一个很好的选择。新功能和页面可以很容易地添加到具有良好架构设计的 MVC 页面中,例如 DDD(服务存储库、依赖注入(inject)等),而旧的东西可以保持原样。在 webforms 页面中组合 MVC 也可以正常工作,尽管 JS 验证可能存在一些小问题。我强烈推荐它。

从创建 MVC 应用程序 (5 atm) 开始相当容易,然后在启动并运行基本模板后,将旧的 Web 表单添加到文件夹中。这样你就可以正确地获得新的 MVC 设置并保持向后兼容性。

  • 您可以创建一个 MVC 项目并将所有 Webforms 页面复制到例如一个文件夹。 (我想也可能只升级一个项目)
  • 设置路由以忽略 URL 中具有该特定文件夹名称的请求。这样 MVC 和 webforms 可以一起使用,而不会在 URL 中出现麻烦。
  • Asp.net WebForms aspx 页面可以驻留在 MVC 中,只要它们没有放在/Views 文件夹中。
  • 使用 Razor 代替旧语法,您可以轻松自定义 HTML 帮助器,而且它更简洁。
  • 查看 MVC 标准和约定, Controller 应该非常轻量级。它不是可以包含您需要的逻辑的代码隐藏。
  • View 不应只包含表示逻辑(无业务逻辑)
  • 一切都是新的 => MVC
  • 双方都可以使用资源、web.config 等
  • 菜单不使用 MVC 中的旧站点地图

Using MVC inside a webforms .aspx page:

下面的文字旨在演示如何从 Web 表单页面内部使用 MVC。 (例如在 MyPage.aspx 中)您可以在 webforms 中使用 MVC 操作/ View ,例如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,而不必担心在 webforms 中完成了什么。

WebForms vs. MVC:

至此,您可能已经非常了解这两种技术之间的差异,但这里是它们之间的一些比较。他们都有自己的目的和用途。对于我需要做的事情,我个人更喜欢 MVC,但这可能取决于您想要实现的目标。

如果您使用例如它们背后的 SOA Web 表单和 MVC 页面都可以使用相同的业务逻辑。 当代码全部在页面后面并绑定(bind)到 UI(没有关注点分离)时,Webforms 可能是有害的。凭借可靠的架构和一些可以减少的工作量。

进一步阅读:

Webforms vs. MVC (Code project)

Difference betweeen ASP.NET WebForms and ASP.NET MVC (a blog)

关于c# - 我可以将 ASP.NET MVC 与常规 ASP.NET Web 表单一起使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/541703/

相关文章:

c# - 判断是否因为抛出异常而执行到 finally block 中

javascript - 在内容可编辑的 div 中禁用特定的按键事件

javascript - ASP.NET 转换为完全基于 AJAX 的应用程序

c# - 如何使用C#编写xml文件

c# - TaskScheduler.Default 不总是保证任务将在池线程上执行吗?

c# - 如何从 vstest.console.exe 将测试结果发布到 TFS

C# 为什么方法 HtmlDocument.GetElementById 匹配标签的属性名称?

c# - 拦截方法调用

c# - 升级到 .NET 4.0 并获取无法加载文件或程序集对已删除的旧版本 DLL 的引用

c# - 当 T 为 IEnumerable<U> 时,myClass<T> 的隐式转换失败