You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

咨询:在基于.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.Mvc
  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebPages
  • Microsoft.Web.Infrastructure

步骤3:配置路由规则

  1. 在项目里新建一个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 }
            );
        }
    }
}
  1. 打开Global.asax,在Application_Start方法里添加路由注册代码:
protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

步骤4:添加MVC控制器和视图

  1. 新建Controllers文件夹,添加HomeController.cs
using System.Web.Mvc;

namespace YourProjectName.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
}
  1. 右键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

火山引擎 最新活动