用于ASP.NET Core 3.1 Razor Pages应用程序的部分页面的类库标记帮助器

问题描述 投票:0回答:1

作为我在ASP.NET Core 3.1 Razor Pages Web应用程序上工作的一部分,我创建了几个自定义标签助手。一旦完成了所有这些工作之后(作为ASP.NET Core 3.1应用程序的一部分),我便将Tag Helpers移至Razor类库(.NET Standard 2.1),因此可以使用自定义Tag其他应用程序中的助手。

这是我在Tag Helper中使用PartialTagHelper类呈现部分页面时遇到的问题:

TypeLoadException:无法加载类型来自的'Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.IViewBufferScope'程序集'Microsoft.AspNetCore.Mvc.ViewFeatures,Version = 3.1.3.0,文化=中性,PublicKeyToken = adb9793829ddae60'。

PartialTagHelper类的构造函数需要此错误中指出的IViewBufferScope参数,并通过依赖注入将其传递到自定义Tag Helper代码中。

在ASP.NET Core 3.1 Razor页面中,自定义Tag Helper代码需要对Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers命名空间的“使用”引用。

在Razor库中,自定义标签帮助程序代码需要对Microsoft.AspNetCore.Mvc.ViewFeatures.Internal命名空间的“使用”引用。

我还尝试使用.NET Standard 2.0和2.1以及.NET Core 3.1类库。在所有这些情况下,类库都需要引用Microsoft.AspNetCore.Mvc.ViewFeatures版本2.2.0和Microsoft.AspNetCore.Razor版本2.2.0进行编译。

因此,错误听起来像是ASP.NET Core 3.1 Razor Page正在注入3.1.3 Microsoft.AspNetCore.Mvc.ViewFeatures程序集,并且其中不包含来自正确程序集的IViewBufferScope参数。

有解决此问题的方法吗?

谢谢

asp.net-core razor-pages .net-standard renderpartial tag-helpers
1个回答
0
投票

由于我最初能够获得Partial Pages的TagHelper作为我的ASP.NET Core 3.1 Razor Pages应用程序的一部分,所以我将该Web应用程序中的csproj文件与ASP.NET Core 3.1类库csproj文件进行了比较。

那是我注意到ASP.NET Core 3.1 Razor Pages csproj文件开始于:

但是各种类库项目并未以“ .Web”结尾。

因此,我将ASP.NET Core类库csproj文件更新为与ASP.NET Core Razor Pages应用程序相同的Project Sdk值。

当我保存csproj文件时,它会自动将输出类型(在“项目属性应用程序”选项卡上)更新为控制台应用程序。我将其更改为“类库”,现在可以使用“部分页面标记助手”而不会出现任何错误,因此我的问题已得到完全解决。

这是我的类库的csproj文件:

 netcoreapp3.1  TargetFramework> true  GeneratePackageOnBuild> true  IsPackable> 1.0.5 版本>库 OutputType> PropertyGroup> Project>
© www.soinside.com 2019 - 2024. All rights reserved.