I'm using ASP.NET Core 5 Razor Pages. The common templates go in Pages/Shared, but I need to rename it to Pages/Foo.
How do I instruct the runtime to look for files in Pages/Foo?
I think it's possible in Startup.ConfigureServices():
services.AddRazorPages(options => {
options.Conventions.??? // what goes here?
});
The paths used to locate Razor Pages views are defined in PageViewLocationFormats, which is a property of RazorViewEngineOptions. You can manipulate this collection to customise these paths.
Here's an example:
services.AddRazorPages()
.AddRazorOptions(o =>
{
var indexOfPagesShared = o.PageViewLocationFormats.IndexOf("/Pages/Shared/{0}.cshtml");
o.PageViewLocationFormats.RemoveAt(indexOfPagesShared);
o.PageViewLocationFormats.Insert(indexOfPagesShared, "/Pages/Foo/{0}.cshtml");
});
There's a tonne of different approaches to modifying the list, but this example shows how to replace the existing /Pages/Shared path with /Pages/Foo. It makes assumptions about the root (/Pages) and the file-extension, but these are typical.
Note that if you're using areas, there's also an AreaPageViewLocationFormats property.
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