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

时间:2018-10-23 15:30:48

标签: c# asp.net-core

我已经创建了带有模板“ / documentation / {category?} / {feature?} ”的路由,并将其命名为 docu ,但是当出现以下错误时我尝试在定位标记帮助程序中使用它。

链接:

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

错误:

  

InvalidOperationException:无法确定以下属性的“ href”属性   。以下属性是互斥的:asp-route   asp-controller,asp-action asp-page,asp-page-handler

如果我在cshtml文件中使用 @ Url.RouteUrl(),它会起作用,但是我不知道是否可以在标签助手中访问它。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

我最终在自定义标签帮助器中的IUrlHelper中使用了我们,而不是使用锚帮助器。

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

    return factory.GetUrlHelper(actionContext);
});

答案 1 :(得分:0)

就像异常告诉您的一样,这里的主要问题是您同时使用asp-page-handlerasp-route。第一个用于生成指向Razor页面的URL,而第二个用于生成指向命名路由的URL。两者是互斥的,因此您只需要选择一个并删除另一个即可。

答案 2 :(得分:0)

颜色

您缺少asp-rout-color =“ docu”的最后一部分