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

Joh*_*ley 5 asp.net .net-core

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

[Route("")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要视图的位置是 /MVC/Views/ControllerName/Index(MethodName)

我尝试将以下内容添加到 Startup => ConfigureServices (IServiceCollection)

services.Configure<RazorViewEngineOptions>(o =>
{
    o.AreaViewLocationFormats.Clear();
    o.AreaViewLocationFormats.Add("/MVC/Views/{1}/{0}" + RazorViewEngine.ViewExtension);
});
Run Code Online (Sandbox Code Playgroud)

以下工作,但我希望它默认为正确的路径

return View("/MVC/Views/Home/Index.cshtml");
Run Code Online (Sandbox Code Playgroud)

小智 7

答案所述:

从 .Net-Core v2.0 开始,您可以在 RazorViewEngineOptions 中使用ViewLocationFormatsAreaViewLocationFormats来修改视图查找。

您正在寻找的选项是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);
    });
Run Code Online (Sandbox Code Playgroud)

仅当您在该位置而不是标准文件夹中有共享布局和 Paritals 时才需要最后一行。