有时为了让前端更方便的修改 cshtml 文件,又不想在前端电脑上安装开发环境,就想打包出来,view 还是像老版本的 mvc 一样独立怎么办呢,很简单3步搞定:

1、修改 .csproj 项目文件:

<PropertyGroup>
    <!--不打包视图文件-->
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
</PropertyGroup>

2、添加 nuget 包引用:Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
3、修改 Program.cs:

builder.Services.AddRazorPages().AddRazorRuntimeCompilation();

需要在 Program.cs (or Startup.cs) 中增加:
builder.Services.AddControllers();

var app = builder.Build();

app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");

添加 API 目录,添加 WebApi 控制器,如果不能访问:
在 App_Start 目录下添加 WebApiConfig.cs:

using System.Web.Http;

namespace pc530.App_Start
{

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

}

Global.asax 中,Application_Start 添加一行:
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);