Я пытаюсь изменить папку root по умолчанию для областей в приложении ASP. NET core 3.1. Я хочу указать / View / Web / Areas как новый root. Я делаю это здесь:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddMvc().ConfigureApplicationPartManager(ConfigureApplicationParts);
services.AddMvc().AddRazorOptions(options =>
{
options.AreaViewLocationFormats.Add("/View/Web/Areas/{2}/Pages/{1}/{0}.cshtml");
//options.AreaPageViewLocationFormats.Add("/View/Web/Areas/{2}/Pages/{1}/{0}.cshtml");
//options.AreaViewLocationFormats.Add("/View/Web/Areas/{2}/Pages/{0}.cshtml");
//options.AreaPageViewLocationFormats.Add("/View/Web/Areas/{2}/Pages/{0}.cshtml");
//options.AreaViewLocationFormats.Add("/View/Web/Areas/{2}");
//options.AreaPageViewLocationFormats.Add("/View/Web/Areas/{2}");
});
}
Как видите, я пробовал несколько разных вариантов, но мне не удалось найти мои страницы Razor, например, в
/View/Web/Areas/PlaygroundCommand3/Pages/Index.cshtml
Одна вещь, которую я выяснил, заключается в том, что метод Configuration должен выполняться до того, как будет вызвано действие по добавлению параметров. Я думаю, из-за этой последовательности не добавляется конечная точка для новой области root. По крайней мере, коллекция конечных точек не содержит пути, указывающего на пользовательское местоположение.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
В результате вызова MapRazorPages()
получаются следующие конечные точки:
/Areas/{2}/Pages/{1}/{0}.cshtml
/Areas/{2}/Pages/Shared/{0}.cshtml
/Areas/{2}/Views/Shared/{0}.cshtml
/Pages/Shared/{0}.cshtml
/Views/Shared/{0}.cshtml
Местоположение, которое я добавление с помощью действия AddRazorOptions
отсутствует.
Я уже некоторое время пытаюсь поискать в Google, но пока не понимаю. Любая помощь высоко ценится.