Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.Net Core Change Default Views Folder Location

I'm trying to change the default views location so the following works:

[Route("")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

The location of where I want the views is /MVC/Views/ControllerName/Index(MethodName)

I've attempt by adding the following to Startup => ConfigureServices (IServiceCollection)

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

The following works but I would prefer for it to default to the correct path

return View("/MVC/Views/Home/Index.cshtml");
like image 719
John Churchley Avatar asked Aug 07 '18 08:08

John Churchley


1 Answers

As stated in this answer:

From .Net-Core v2.0 upwards you can use ViewLocationFormats and AreaViewLocationFormats in RazorViewEngineOptions to modify the View look-up.

The option you are looking for is ViewLocationFormats since you're not using View Areas.

Your Solution would be along these lines:

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);
    });

The last line is only needed if you have the shared Layouts and Paritals at that location and not in the Standard Folder.

like image 110
Severin Jaeschke Avatar answered Nov 11 '22 04:11

Severin Jaeschke