Did you know that we have an elegant approach to generate views with ASP.NET and ASP.NET Core? Read to understand.
It's possible that your backend runs on a different server than your web server. What would you do if you have to render certain views or even send emails on your backend (ex. reset password token) but don't have access to the MVC framework from it?
RazorTemplates
An elegant solution would be using RazorTemplates. RazorTemplates is an open source templating engine based on Microsoft's Razor parsing engine. The library allows building razor templates outside ASP.NET MVC Projects including in our own backends. It solves that common use case where we need to email users from our backends.For reference, the github page is located here.
Using RazorTemplates
Add a reference to your project
The first thing you need to do is to add a reference to the RazorTemplates nuget package to your solution:
Project -> Manage Nuget Packages -> search for "RazorTemplates":
Create your view
Once added, it's time to create your views. Simply create a csthml in your non-web project as you would create any other file type, suffixing it with cshtml.Note that here my model is dynamic so I'm not required to have a strongly typed model.
Set the custom tool property
Because you want to use your view server side, you need to have a C# file to reference it. To make that happen, you need to configure Visual Studio to to scaffold the C# code for you. To do so: click on your recently added file and press F4 to display the Properties Window, then set the custom tool property to "RazorGenerator":Render the view in the backend using C#
Then, to have your template generated, you just need to call RazorTemplate's TransformText method. After the above code is run, TransformText returns you a string with the rendered content. You can then email that string or create fancy reports from your backend.RazorTemplates and ASP.NET Core
To Asp.Net core users, Microsoft just released a similar approach to Razor UI in class libraries. We will explore that feature in the blog in the future.Final Thoughts
While ASP.NET Core provides server-side view generation, none exists for ASP.NET. Since one of the most common scenarios developers encounter is emailing users from the backend, an elegant solution would be using the aforementioned RazorTemplates nuget package.See Also
- My journey to 1 million articles read
- Creating ASP.NET Core websites with Docker
- Hosting NuGet packages on GitHub
- Send emails from ASP.NET Core websites using SendGrid and Azure
- Configuration in .NET Core console applications
- How to export HTML to PDF using JavaScript
- Building and Running ASP.NET Core apps on Linux
- Testing Javascript on ASP.NET Core Applications
- Copying data between Azure databases in 3 easy steps
- Creating a Ubuntu Desktop instance on Azure
- Windows Subsystem for Linux, the best way to learn Linux on Windows
- Package Management in .Net Core