.net core 2.1在各个项目中重用_Layout

时间:2018-11-09 18:47:32

标签: c# .net .net-core razor-pages .net-core-2.1

我试图在多个.net core 2.1 Razor Page项目中重用相同的_Layout.cshtml文件。目前,我有一个Razor页面类库(公共共享项目),它是_Layout.cshtml文件所在的位置。除了布局文件外,还有其他所有项目也应该可以访问的css和js文件(我能够完成这项工作)。

次级项目将引用共同共享项目,并且应该能够利用其中的_Layout.cshtml文件。

我的问题是,当我从这些项目访问页面时,当前它不加载通用的_layout文件,而是加载其自己的布局文件。如果我尝试删除此文件,则会引发错误,即找不到布局文件。但是,如果我加载共同共享项目中包含的页面,它将加载它自己的_layout。

我已使用以下教程来了解自己的位置,但无法弄清楚如何使辅助项目在公共共享项目中加载布局。

Including Static Resources In Razor Class Libraries In ASP.NET Core

Can Razor Class Library pack static files (js, css etc) too

Reuse UI With Razor Class Libraries (RCL) In ASP.NET Core

请记住,这些文章中的2篇是基于共享css和js文件(确实起作用)的,但是我也阅读了布局的其他示例,也没有运气(当前我不了解)有其他文章的链接)

就我编写的代码而言,我目前正在尝试一个示例项目,它与第一篇文章(在ASP.NET Core中的Razor类库中包括静态资源)相同。< / p>

更新

利用第三个链接(在ASP.NET Core中与Razor类库(RCL)一起使用UI)能够实现我的目标。但是,我以前使用的是相同的策略,但无法正常工作。我将尝试更多地玩这个游戏。如果我还有其他更新,我会发布。

1 个答案:

答案 0 :(得分:1)

显然,由于我正在使用Including Static Resources In Razor Class Libraries In ASP.NET Core链接,因此该示例保留了包含 Area / MyFeatures 文件夹的默认剃刀页面类库结构。我对其进行了修改,使其像最后一个链接Reuse UI With Razor Class Libraries (RCL) In ASP.NET Core一样工作,在该链接中,共同共享项目的结构与Web应用程序项目的结构相同(没有 Area MyFeatures 文件夹)。我还添加了:

@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers

位于共同共享项目中的_ViewStart.cshtml的末尾。

也要注意,您必须从Web应用程序中删除_layout.cshtml,_viewimports.cshtml和_viewstart.cshtml,否则它将覆盖共享项目的布局。

无论如何,这似乎已经解决了该问题,并且现在可以正常工作。