I wanted to take a default asp.net core MVC project in Visual Studio and then see if I could added Razor pages support and use them both.
I created an MVC project and compared it to a new razor project. Using insight from a stack overflow article "How to extend an ASP.NET Core MVC project by Razor Pages?", I was able to successfully do just that.
Using Visual Studio
The folder structure of the result:
Do F5 (or CTRL+F5) and you get the standard MVC rendered web pages and web app.
-
Add a new folder to the project and name it
Pages
This is a Razor convention. Other helpful Razor information at the MS Docs site. -
Add the line
services.AddRazorPages();
in
public void ConfigureServices(IServiceCollection services)
- Add the line
endpoints.MapRazorPages();
to
app.UseEndpoints(endpoints =>
in
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
At this point, a Razor page can be added and can be navigated to:
So now one may wish to use the existing layout options with the new razor pages.
That will result in the following rendered html:
IF you do not copy the _ViewStart.cshtml
file to the >Pages
folder, you CAN selectively apply the layout to a individual Razor files by adding the tag to page:
MVC
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
vs Razor
<a class="nav-link text-dark" asp-area="" asp-page="/HelloWorld">Hello Razor</a>
I create this for my own reference and hopefully others will also find it helpful.
[EXTERNAL REFERENCES] https://dev.to/ivanrainbolt/add-razor-pages-support-to-a-net-core-mvc-project-1j54