如何更改或配置查看剃刀cshtml页面的目录



我曾尝试更新Razor-cshtml视图页面路径,但没有成功。要更新我尝试过的查看页面位置启动.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"));
});
}

控制器:

public class HomeController : Controller
{
}

当前视图页面路径

Views/Home/Index.cshtml
Views/Home/AppHome.cshtml

想要修改视图路径像这样的

Views/Home/myapp/Index.cshtml
Views/Home/myapp/AppHome.cshtml

但不是售后服务配置,它不起作用。如何更改查看页面目录?

谢谢。

ASP.NET Framework

要更改视图搜索位置,需要创建一个从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_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 CORE 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);
});
}

有关更多信息,请参阅RazorViewEngineOptions.ViewLocationFormats属性

最新更新