ASP.Net Core更改默认视图文件夹位置

时间:2018-08-07 08:45:22

标签: asp.net .net-core

我正在尝试更改默认的视图位置,以便进行以下工作:

[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");

2 个答案:

答案 0 :(得分:1)

this所述:

从.Net-Core v2.0版本开始,您可以在RazorViewEngineOptions中使用ViewLocationFormatsAreaViewLocationFormats来修改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}");
});
相关问题