Thursday, July 9, 2020

ASP.NET Core–Razor Class Libraries

A little known feature in ASP.NET Core (MVC/Razor pages) is the support for Razor Class libraries(RCL).  Through the RCL you can package and reuse UI components like View Components or Razor Components but also share full feature areas containing Razor view, controllers, models and so on…

Let’s get started

  • Open Visual Studio and choose Create a new project.
  • Select Razor Class Library and click Next.

  • Give the library a name and click on Create.
    • Remark 1: To avoid a file name collision with the generated view library, ensure the library name doesn't end in .Views.
    • Remark 2: Select Support pages and views if you need to support views. Otherwise only Razor components are supported.

Now you can start adding your View Components and Razor components to your RCL. When building your RCL 2 DLL’s are created:

  • One DLL containing all your logic
  • One DLL containing your Razor views (ends with .Views)

You can now either reference this RCL directly or include it in your project through NuGet.

What’s nice is that you still can override a view by providing the same Razor markup file (.cshtml) in your web app. The file in your web app will always take precedence.