ASP.NET Core 2.2中的链接标签助手无法工作

3

在迁移到asp.net core 2.2之后,我的链接标签助手不再正常工作。

 <a class="btn btn-outline-primary" asp-controller="MyController" asp-action="MyAction" asp-route-id="@Id">Link</a>

当我将兼容版本设置为2.1时,这个功能可以正常工作,但是当我将兼容版本设置为2.2时,它会产生一个空的href。

<a class="btn btn-outline-primary" href="">Link</a>

我按照从ASP.NET Core 2.1迁移到2.2的步骤进行操作。
 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);  --> Works

 .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);  --> Doesn't work

项目文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <TypeScriptToolsVersion>2.8</TypeScriptToolsVersion>
    <LangVersion>7.2</LangVersion>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.2" />
    <PackageReference Include="Microsoft.Windows.Compatibility" Version="2.0.1" />
    <PackageReference Include="Sendgrid" Version="9.10.0" />
    <PackageReference Include="Stripe.net" Version="22.8.1" />
    <PackageReference Include="UAParser" Version="3.1.36" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Data\Migrations\" />
  </ItemGroup>

</Project>

嗯,这真的很奇怪,显然对其他人来说运行良好。你的csproj文件包含什么? - DavidG
生成了什么HTML? - Anton Toshik
那个Windows.Compatibility包的版本看起来有点可疑,另外你能展示一下你的_ViewImports吗? - Anton Toshik
为什么Windows兼容性版本靠不住?在我看来很好。这是微软的最新发布...https://www.nuget.org/packages/Microsoft.Windows.Compatibility - UnknownT
1
我不得不禁用端点路由才能使其正常工作: services.AddMvc(config => { config.EnableEndpointRouting = false; }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); - UnknownT
3个回答

2

我认为这个回答解决了一个问题,即如果Razor视图完全没有检测到Taghelper,则无法使用2.2中内置的标签助手按预期工作。 - David B

2
我今天在一个新的AspNet Core 2.2项目中使用内置MVC模板创建时遇到了同样的问题,HTML中没有生成标签。将以下内容更改为:services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);可以解决该问题,我进行了一些挖掘,看起来在AspNetCore 2.2中已经被提出作为一个问题。他们提到在AspNetCore 3.0.0-preview3中已经修复了这个问题。详见:https://github.com/aspnet/AspNetCore/issues/5055https://github.com/aspnet/AspNetCore/issues/6471。如果您需要使用AspNetCore 2.2,则根据提出的问题,在您的Startup.cs中可以暂时使用以下方法来解决此问题:services.AddMvc(options => options.EnableEndpointRouting = false)

1

对于所有视图,请在_Layout.cshtml的头部添加此行:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接