咨询:在基于.NET 4的现有WebForms应用中添加MVC项目的方法
解决VS2017中.NET 4项目无法启用MVC模板的问题
老兄,我之前刚好碰到过一模一样的场景,给你一步步拆解怎么搞定:
首先得明白为什么那些复选框是灰的——VS2017自带的MVC模板默认只支持.NET Framework 4.5及以上版本,而你的项目是.NET 4,所以模板选项直接被禁用了。不过没关系,咱们手动配置MVC完全可行,根本不需要依赖模板。
步骤1:创建Empty ASP.NET Web Application
先选你能看到的那个「Empty」选项创建项目,目标框架选.NET Framework 4,这是咱们的基础载体。
步骤2:安装MVC相关NuGet包
右键项目→「管理NuGet程序包」,搜索并安装以下包(版本要统一,选支持.NET 4的最高稳定版,比如5.2.9系列):
Microsoft.AspNet.MvcMicrosoft.AspNet.RazorMicrosoft.AspNet.WebPagesMicrosoft.Web.Infrastructure
步骤3:配置路由规则
- 在项目里新建一个
App_Start文件夹,然后添加类RouteConfig.cs,代码如下:
using System.Web.Mvc; using System.Web.Routing; namespace YourProjectName { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
- 打开
Global.asax,在Application_Start方法里添加路由注册代码:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); }
步骤4:添加MVC控制器和视图
- 新建
Controllers文件夹,添加HomeController.cs:
using System.Web.Mvc; namespace YourProjectName.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } } }
- 右键
Index方法→「添加视图」,选Empty模板,按需勾选「使用布局页」,确认创建即可。
额外说明(如果是和现有WebForms共存)
要是你不想新建项目,而是在已有的WebForms应用里加MVC,步骤完全一样:安装NuGet包、配置路由、添加控制器视图就行,两个框架可以完美共存,互不影响。
服务器部署注意事项
因为你的服务器是Windows 2003 R2,要确保:
- 服务器上安装了.NET Framework 4.0
- IIS里启用了「ASP.NET v4.0」的Web服务扩展
- 应用程序池设置为.NET Framework 4.0版本
内容的提问来源于stack exchange,提问作者Dmytro




