我正在尝试更改默认的视图位置,以便进行以下工作:
[Route("")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
我想要视图的位置是/ MVC / Views / ControllerName / Index(MethodName)
我尝试通过将以下内容添加到Startup => ConfigureServices(IServiceCollection)
services.Configure<RazorViewEngineOptions>(o =>
{
o.AreaViewLocationFormats.Clear();
o.AreaViewLocationFormats.Add("/MVC/Views/{1}/{0}" + RazorViewEngine.ViewExtension);
});
以下方法可行,但我希望它默认为正确的路径
return View("/MVC/Views/Home/Index.cshtml");
答案 0 :(得分:1)
如this所述:
从.Net-Core v2.0版本开始,您可以在RazorViewEngineOptions中使用ViewLocationFormats
和AreaViewLocationFormats
来修改View查找。
要查找的选项是ViewLocationFormats
,因为您没有使用“查看区域”。
您的解决方案将遵循以下原则:
services.Configure<RazorViewEngineOptions>(o =>
{
o.ViewLocationFormats.Clear();
o.ViewLocationFormats.Add("/MVC/Views/{1}/{0}" + RazorViewEngine.ViewExtension);
o.ViewLocationFormats.Add("/MVC/Views/Shared/{0}" + RazorViewEngine.ViewExtension);
});
仅当您在该位置(而不是在标准文件夹中)拥有共享的版式和主题时,才需要最后一行。
答案 1 :(得分:0)
接受的答案是正确的,如果有人要更改Areas
的默认视图文件夹位置(像我一样),则解决方法是:
services.Configure<RazorViewEngineOptions>(options =>
{
options.AreaViewLocationFormats.Clear();
options.AreaViewLocationFormats
.Add($"/Path/To/Views/With_items
/{{0}}{RazorViewEngine.ViewExtension}");
options.AreaViewLocationFormats
.Add($"/Path/To/Views/Shared/{{0}}{RazorViewEngine.ViewExtension}");
});