C# 如何更改或配置查看HTML页面的目录

C# 如何更改或配置查看HTML页面的目录,c#,asp.net,asp.net-mvc,asp.net-core,razor,C#,Asp.net,Asp.net Mvc,Asp.net Core,Razor,我已经尝试更新Razor cshtml查看页面路径,但它不起作用 Startup.cs public void ConfigureServices(IServiceCollection services) { var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions { EnableQuickPulseMetri

我已经尝试更新Razor cshtml查看页面路径,但它不起作用 Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions
    {
        EnableQuickPulseMetricStream = true
    };
    services.AddMvc();//.WithRazorPagesRoot("/Home/myapp");
    //services.Configure<RazorPagesOptions>(options => options.RootDirectory = "/Home/myapp");
    services.AddApplicationInsightsTelemetry(aiOptions);
    services.AddCors(option =>
    {
        option.AddPolicy("AllowSpecificOrigin", policy => policy.WithOrigins("*"));
        option.AddPolicy("AllowGetMethod", policy => policy.WithMethods("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"));
    });
}
当前视图页面路径

Views/Home/Index.cshtml
  Views/Home/AppHome.cshtml
要修改路径视图吗

Views/Home/myapp/Index.cshtml
 Views/Home/myapp/AppHome.cshtml
但在服务配置之后就不行了。如何更改查看页面目录

谢谢

ASP.NET框架

要更改视图搜索位置,需要创建一个从
RazorViewEngine
派生的新类,并更改以下一个或多个属性的值:

  • ViewLocationFormats
  • MasterLocationFormats
  • PartialViewLocationFormats
每个属性都是一个字符串数组,使用复合字符串格式表示法表示。对于
ViewLocationFormats
属性,默认值为:

~/Views/{1}/{0}.cshtml,
~/Views/{1}/{0}.vbhtml,
~/Views/Shared/{0}.cshtml,
~/Views/Shared/{0}.vbhtml
以下是与占位符对应的参数值:

  • {0}表示视图的名称
  • {1} 表示控制器的名称
以下示例显示了如何更改上述所需的视图位置:

public class CustomLocationViewEngine : RazorViewEngine
{
    public CustomLocationViewEngine()
    {
        ViewLocationFormats = new string[] 
        {                
            "~/Views/{1}/myapp/{0}.cshtml",
            "~/Views/{1}/{0}.cshtml"
        };
    }
}
下一步是使用
Global.asax的
Application\u Start
方法中的
ViewEngines.Engines
集合注册
CustomLocationViewEngine

protected void Application_Start()
{
    for (var i = ViewEngines.Engines.Count - 1; i >= 0; i--)
    {
        if (ViewEngines.Engines[i] is System.Web.Mvc.RazorViewEngine)
        {            
            // Remove the current Razor view engine
            ViewEngines.Engines.RemoveAt(i);
            break;
        }
    }    
    // Add the new customized view engine
    ViewEngines.Engines.Add(new CustomLocationViewEngine());

    //…
}
ASP.NET核心3.1

对于MVC Core 3.1,Startup.cs中的
ConfigureServices
方法应更新如下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.Configure<RazorViewEngineOptions>(o =>
    {
        o.ViewLocationFormats.Clear();
        o.ViewLocationFormats.Add("/Views/{1}/myapp/{0}" + RazorViewEngine.ViewExtension);
        o.ViewLocationFormats.Add("/Views/Shared/myapp/{0}" + RazorViewEngine.ViewExtension);
     });
}
public void配置服务(IServiceCollection服务)
{
services.AddControllersWithViews();
服务配置(o=>
{
o、 ViewLocationFormats.Clear();
o、 添加(“/Views/{1}/myapp/{0}”+RazorViewEngine.ViewExtension);
o、 添加(“/Views/Shared/myapp/{0}”+RazorViewEngine.ViewExtension);
});
}

有关更多信息,请参见

您可以使用功能文件夹,这将允许您自定义视图位置:我有在.NET Framework上运行的无状态ASP.NET核心应用程序。(Web api MVC)…项目中没有
.asax
文件…我可以在
startup.cs
文件中使用吗?@r08-对于ASP.NET MVC CORE 3.1版本,更新看起来不同。请参阅上面的修复。
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.Configure<RazorViewEngineOptions>(o =>
    {
        o.ViewLocationFormats.Clear();
        o.ViewLocationFormats.Add("/Views/{1}/myapp/{0}" + RazorViewEngine.ViewExtension);
        o.ViewLocationFormats.Add("/Views/Shared/myapp/{0}" + RazorViewEngine.ViewExtension);
     });
}