我曾尝试更新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属性