在Razor类库中找不到部分视图

时间:2018-09-21 21:55:13

标签: razor razor-pages

我有一个具有以下结构的简单RCL:

/Pages /Shared/ _Footer.cshtml

内容非常简单:

<h3>  _Footer.cshtml partial view.</h3>

我还有一个具有相同文件夹结构的ASP.NET Core Web App项目:

/Pages _ViewImports.cshtml -ViewStart.cshtml /Shared _Layout.cshtml

在布局文件的某个地方,我引用了局部视图:

<partial name="_Footer" />

问题出在这里

  • 如果我将RCL的项目引用添加到Web应用程序,则会找到部分视图,并且页面可以很好呈现。
  • 如果我从RCL中制作一个Nuget程序包,将其添加到本地Nuget源并添加对该程序包的引用,将找不到部分视图。

The partial view '_Footer' was not found. The following locations were searched: /Pages/_Footer.cshtml /Pages/Shared/_Footer.cshtml /Views/Shared/_Footer.cshtml

添加项目参考和Nuget参考之间有什么区别?我已经验证了Nuget包确实包含了类库的默认程序集和视图程序集。

4 个答案:

答案 0 :(得分:2)

我发现,如果您使用dotnet pack而不是nuget pack,它会起作用。请注意,dotnet pack软件包信息是从csproj而不是nuget spec文件中读取的。

答案 1 :(得分:1)

根据文档(https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk),我认为您可以使用IncludeRazorContentInPack将.cshtml文件包含在NuGet包中(默认为false)。

答案 2 :(得分:1)

在我的情况下,我什至无法在操作员说它确实起作用的情况下使其起作用:

如果我将RCL的项目引用添加到Web App,则局部视图 找到并且页面可以正常显示。

我只是收到标准错误消息,即未找到部分视图(即使搜索的路径正确)。

经过一番撞击后,我通过将以下xml块添加到两个.csproj文件中来解决了此问题:

  1. RCL:例如RazorUIClassLib.csproj
  2. 网络应用:例如WebApp1.csproj
const props = ['bar']
for(const [key,value] of props.entries()) {
    console.log(this[value as keyof this])
}

答案 3 :(得分:0)

我遇到了同样的问题,解决了从库区域写入完整路径的问题,例如:

在图书馆,我有:

区域/页脚/页面/_footer.cshtml

使用我的UI Proyect,我这样称呼它:“”

我希望它能为您提供帮助