【问题标题】:Link tag helper not working in asp.net core 2.2链接标签助手在 asp.net core 2.2 中不起作用
【发布时间】:2019-07-10 08:56:04
【问题描述】:

迁移到 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>

我按照步骤Migrate from ASP.NET Core 2.1 to 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 文件包含什么?
  • 生成了什么 html?
  • 那个 Windows.Compatability 包版本看起来很狡猾,你也可以显示你的 _ViewImports
  • 为什么 Windows.Compatabilty 版本不可靠?在我看来很好。来自 Microsoft 的最新版本...nuget.org/packages/Microsoft.Windows.Compatibility
  • 我必须禁用端点路由才能使其工作:services.AddMvc(config => { config.EnableEndpointRouting = false; }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

标签: asp.net-core asp.net-core-tag-helpers asp.net-core-2.2


【解决方案1】:

我是这项技术的新手,我也遇到过同样的问题。添加后

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyNameSpace

在 ViewImports.cshtml 中,如此处所述 https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring?view=aspnetcore-2.2 一切都很好。

【讨论】:

  • 我认为如果在 Razor 视图中根本没有检测到 Taghelper,而不是如果它被检测到但使用 2.2 中的内置标签帮助程序没有按预期运行,则可以回答。
【解决方案2】:

我今天在使用内置 MVC 模板创建的新 AspNet Core 2.2 项目中遇到了同样的问题。标签不是在 HTML 中生成的。

更改以下内容

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

工作并且标签现在呈现在 HTML 中,我进行了一些挖掘,看起来这已经作为 AspNetCore 2.2 中的问题提出。他们提到它已在 AspNetCore 3.0.0-preview3 中修复。

这里提到:https://github.com/aspnet/AspNetCore/issues/5055 和这里https://github.com/aspnet/AspNetCore/issues/6471

如果您需要使用 AspNetCore 2.2,那么一个临时的解决方法是在您的Startup.cs 中修改以下内容,如提出的问题所述。

services.AddMvc(options =&gt; options.EnableEndpointRouting = false)

【讨论】:

    【解决方案3】:

    对于所有视图在 _Layout.cshtmml 的标题上添加此行:

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      相关资源
      最近更新 更多