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");
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With