如何将 razor 视图分发到 .NET Core 中的另一个应用程序

Jen*_*nan 3 views razor asp.net-core asp.net-core-middleware

我已经创建了 Web 应用程序 -Asp.Net MVC.NET Core.

该应用程序包含一些Razor Views视图,但我想将这些视图共享给另一个应用程序,例如使用 DLL 或中间件。

以下是有关分发示例的一些信息,ControllersViews没有什么特别之处 - https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts

我试过像这样添加控制器:

var assembly = typeof(Project.HomeController).GetTypeInfo().Assembly;

services.AddMvc()
        .AddApplicationPart(assembly);
Run Code Online (Sandbox Code Playgroud)

这很好用,但我不知道如何添加视图。

如何将其分发Razor Views到另一个应用程序?是将它们像中间件一样导入到MVC middleware?

小智 6

您可以创建一个普通的 netstandard1.6 库,即您的控制器所在的位置,并使用以下命令将视图资源嵌入到您的 csproj 中的该 dll 中:

  <ItemGroup>
    <EmbeddedResource Include="Views\**\*.cshtml" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

之后,您可以使用 RazorViewEngineOptions 注册这些:

// Add views provided in this assembly.     
services.Configure<RazorViewEngineOptions>(options =>
{
    options.FileProviders.Add(
        new EmbeddedFileProvider(typeof(ClassInLibrary).GetTypeInfo().Assembly));
});
Run Code Online (Sandbox Code Playgroud)

其中“ClassInLibrary”是库中的一个类,您可以从中获取程序集信息。