可以在当前使用ASP .NET的Web应用程序中使用MVC框架吗?

cha*_*hai 5 asp.net-mvc asp-classic

我最近加入了一个管理Classic ASP Web应用程序的小组.它一直很好地满足了我们团队的需求.但是,在我加入之前,我决定转向ASP .Net.由于我们主要是ASP开发人员,因此我们在ASP .Net中编写代码,就像在Classic ASP中一样(大多数情况下).是否有可能将MVC引入此应用程序/项目?

谢谢!

Hac*_*ese 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 扩展:

    • 在“解决方案资源管理器”中,右键单击项目名称并选择“卸载项目”。然后再次右键单击项目名称并选择编辑 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 语法(底漆)。您可以同时使用 ASPX 和 Razor 视图页面。但是,您不能在 Razor 视图上使用 ASPX 母版页(反之亦然)。此外,MVC 将在 Razor 视图之前查找并使用 ASPX 视图,因此,如果将视图升级到 Razor,请删除原始 ASPX。您需要做一些额外的工作才能启用 Razor 视图。我正在尝试查找启用 Razor 的注释。当我找到它们时我会更新。安装 Razor 并使其正常工作后,您可以使用Telerik 提供的此工具将 ASPX 转换为 Razor。
  4. 这是关于我在升级时遇到的问题的问题。我提供它只是因为它更详细地涵盖了我上面提到的一些要点。然而,我当时正在升级到 MVC 2,所以其中一些内容已经过时了。