如何在.NET核心分配剃刀查看另一个应用程序
问题描述:
我创建Web应用程序 - Asp.Net MVC
在.NET Core
。如何在.NET核心分配剃刀查看另一个应用程序
此应用程序包含一些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库,即在您的控制器,并使用以下嵌入视图的资源投入到该DLL在您的csproj:
<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”是在你的库中的类,然后你可以得到的装配信息。
第一个问题是,为什么你要这么做?分配无控制器的视图。如果你还分发控制器,为什么不把控制器和视图放在同一个程序集中?视图对于控制器来说总是很特殊的,所以重复使用视图没有任何价值而没有支持它的控制器。同样以程序集方式分发视图会阻止消费者定制模板(添加或删除某些信息等) – Tseng
我想重复使用与特定图形设计完全相同的应用程序部分。该视图与控制器在同一个Assembly中,但我不知道View如何添加到Startup中的另一个应用程序。你可以把一些示例视图与控制器如何连接到特定的应用程序? – Jenan
@Tseng我已经更新了我的问题,我如何添加控制器,这工作得很好,但我不知道如何添加视图。 :) – Jenan