如何将 razor 视图分发到 .NET Core 中的另一个应用程序
How to distribute razor views to another application in .NET Core
我已经在 .NET Core
中创建了 Web 应用程序 - Asp.Net MVC
。
此应用程序包含一些 Razor Views
但我想将这些视图共享给另一个应用程序,例如使用 DLL 或类似中间件。
这是一些关于分布 Controllers
示例的信息,但在 Views
周围没有什么特别的 - https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts
我试过像这样添加控制器:
var assembly = typeof(Project.HomeController).GetTypeInfo().Assembly;
services.AddMvc()
.AddApplicationPart(assembly);
效果很好,但我不知道如何添加视图。
如何将 Razor Views
分发到另一个应用程序?是否可以像中间件一样将它们导入 MVC middleware
?
您可以创建一个普通的 netstandard1.6 库,即您的控制器所在的位置,并使用以下命令将视图资源嵌入到您的 csproj 中的该 dll 中:
<ItemGroup>
<EmbeddedResource Include="Views\**\*.cshtml" />
</ItemGroup>
之后,您可以使用 RazorViewEngineOptions 注册它们:
// Add views provided in this assembly.
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(
new EmbeddedFileProvider(typeof(ClassInLibrary).GetTypeInfo().Assembly));
});
其中 "ClassInLibrary" 是您库中的一个 class,您可以从中获取程序集信息。
我已经在 .NET Core
中创建了 Web 应用程序 - Asp.Net MVC
。
此应用程序包含一些 Razor Views
但我想将这些视图共享给另一个应用程序,例如使用 DLL 或类似中间件。
这是一些关于分布 Controllers
示例的信息,但在 Views
周围没有什么特别的 - https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts
我试过像这样添加控制器:
var assembly = typeof(Project.HomeController).GetTypeInfo().Assembly;
services.AddMvc()
.AddApplicationPart(assembly);
效果很好,但我不知道如何添加视图。
如何将 Razor Views
分发到另一个应用程序?是否可以像中间件一样将它们导入 MVC middleware
?
您可以创建一个普通的 netstandard1.6 库,即您的控制器所在的位置,并使用以下命令将视图资源嵌入到您的 csproj 中的该 dll 中:
<ItemGroup>
<EmbeddedResource Include="Views\**\*.cshtml" />
</ItemGroup>
之后,您可以使用 RazorViewEngineOptions 注册它们:
// Add views provided in this assembly.
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(
new EmbeddedFileProvider(typeof(ClassInLibrary).GetTypeInfo().Assembly));
});
其中 "ClassInLibrary" 是您库中的一个 class,您可以从中获取程序集信息。