尝试在锚标记帮助程序中使用自定义路由时出错



我用模板">/文档/{类别?}创建了一个路由/{功能?}"并将其命名为doccu,但当我尝试在锚标记帮助程序中使用它时出现错误。

链接:

<a asp-route="docu" 
asp-route-category="layout" 
asp-route-feature="colors" 
asp-page-handler="Feature" class="link">Color</a>

错误:

无效操作异常:无法确定 的"href"属性 .以下属性是互斥的:asp-route ASP-Controller, ASP-Action ASP-Page, ASP-page-handler

如果我在 cshtml 文件中使用@Url.RouteUrl((,它可以工作,但我不知道我是否可以在标记帮助程序中访问它。

有什么建议吗?

就像异常告诉你的那样,这里的主要问题是你同时使用两者

  1. asp-page-handler
  2. asp-route.

第一个用于生成指向 Razor 页面的 URL,而后者用于生成指向命名路由的 URL。这两者是互斥的,因此您只需选择一个并删除另一个。

颜色

您缺少 asp-rout-color="doccu" 的最后一部分

我最终在自定义标记助手中使用了 IUrlHelper,而不是使用锚点助手。

services.AddScoped<IUrlHelper>(x =>
{
var actionContext = x.GetRequiredService<IActionContextAccessor>().ActionContext;
var factory = x.GetRequiredService<IUrlHelperFactory>();
return factory.GetUrlHelper(actionContext);
});

最新更新