5

我最近加入了一个管理经典 ASP Web 应用程序的组。它一直很好地满足我们团队的需求。然而,在我加入之前,我决定迁移到 ASP .Net。由于我们主要是 ASP 开发人员,因此我们在 ASP .Net 中编写代码就像在 Classic ASP 中一样(大部分情况下)。是否可以将 MVC 引入此应用程序/项目?

谢谢!

4

4 回答 4

2

简短的回答是肯定的,这是可能的。

Scott Hanselman 之前写过关于这个话题的文章。

根据您团队中的技能,您可能会发现很难跟上进度 - 可以在 Classic ASP 中编写干净的 MVC 样式代码,但大多数人不这样做。

于 2012-10-09T20:01:09.337 回答
2

是的,可以在传统的 WebForms 项目中使用 MVC。几年前,我将一个大型 WebForms 项目迁移到 MVC 2,这是我的发现(我已经更新它们以反映 MVC 3)

  1. 确保您已安装 .NET 4.0,以及 MVC 3 框架和 VS 扩展。
  2. 创建一个新的空白 MVC 项目以用作参考。
  3. 查看参考项目的默认 web.config。您基本上想使用参考 web.config,并从当前项目中合并您需要的东西。
  4. 查看参考 global.asax.cs。与上述类似,您希望将引用 .cs 中的更改合并到当前应用程序的 global.asax.cs 中。
  5. 您需要将以下引用添加到您的 Web 项目中:

    System.Web.Abstractions、System.Web.Extensions、System.Web.Helpers、System.Web.Mvc、System.Web.Routing

  6. 您可以通过更改 ProjectTypeGuids 来启用 VS 扩展:

    • 在解决方案资源管理器中,右键单击项目名称并选择卸载项目。然后再次右键单击项目名称并选择 Edit ProjectName.csproj。
    • 找到 ProjectTypeGuids 元素并添加 {E53F8FEA-EAE0-44A6-8774-FFD645390401}。
    • 保存更改,右键单击项目,然后选择重新加载项目。
  7. 为 MVC 内容添加以下标准文件夹:

    • 〜/视图
    • 〜/视图/共享
    • ~/控制器
    • ~/Models(用于您的视图模型,可选)
    • ~/Content(用于 CSS 和图像,可选)
    • ~/Scripts(对于 JS,可选)

补充笔记:

  1. 如果您现有的 WebForms 依赖于 web.config 设置进行授权(例如阻止未经授权的用户),则 MVC 操作将无法识别这一点,因为路由与 WebForms 授权完全分开工作。使用AuthorizeAttribute要求授权,或将操作限制到某些角色或用户。您甚至可以指定全局过滤器,这样您就不必在每个控制器或操作上应用此属性。
  2. 使 MVC 与 7 之前的 IIS 版本或使用经典管道的应用程序池一起工作可能还有其他注意事项。考虑使用带有集成管道的 IIS 7+。
  3. 我上面的笔记主要涉及让 MVC 工作的基线,它使用 ASPX 视图。ASPX 视图使用与您在 WebForms 中使用的 ASPX 文件相同的标记。您还可以使用我强烈推荐的新 Razor 语法 ( primer )。您可以同时使用 ASPX 和 Razor 视图页面。但是,您不能在 Razor 视图上使用 ASPX 母版页(反之亦然)。此外,MVC 将在 Razor 视图之前查找和使用 ASPX 视图,因此如果将视图升级到 Razor,请删除原始 ASPX。您需要做一些额外的工作来启用 Razor 视图。我正在尝试查找启用 Razor 的笔记。当我找到它们时,我会更新。一旦你安装了 Razor 并开始工作,你可以使用Telerik的这个工具将 ASPX 转换为 Razor。
  4. 这是一个关于我在升级时遇到的问题的问题。我之所以提供它,是因为它更详细地涵盖了我上面提到的一些要点。但是,当时我正在升级到 MVC 2,所以其中一些东西已经过时了。
于 2012-10-09T20:34:12.940 回答
1

这当然在技术上是可行的。然而,这听起来像是一种文化冲击,因为 MVC 的工作方式与 Classic ASP 或 ASP.NET WebForms 有很大不同。我认为这样做是值得的——或者如果这看起来更自然的话,就坚持使用 ASP.NET WebForms。但是,如果您还没有完全致力于 WebForms,那么 MVC 似乎也很容易迁移到 IMO。

于 2012-10-09T20:02:34.750 回答
1

是的。我从事的项目最初是纯 ASP.NET,后来添加了一些 ASP.NET MVC 页面。最终,我们更喜欢 MVC,以至于我们最终将所有 WebForms 页面迁移到使用 MVC。但自始至终,这两个系统都很好地协同工作。

这是我能记得遇到的唯一真正的问题:WebForms 的工作原理是将整个页面封装在一个大<form>标签中。由于 HTML 不允许您有嵌套<form>标签,因此您通常不能在 WebForms 页面内使用 MVC 表单。将 WebForms 页面与 MVC 内容分开,避免在可能出现在 WebForms 页面上的 MVC 内容中使用 HTML 表单,或者为在 WebForms DOM 区域之外创建的表单使用弹出对话框。

于 2012-10-09T20:03:56.597 回答