我已经创建了带有模板“ / 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(),它会起作用,但是我不知道是否可以在标签助手中访问它。
有什么建议吗?
答案 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-handler
和asp-route
。第一个用于生成指向Razor页面的URL,而第二个用于生成指向命名路由的URL。两者是互斥的,因此您只需要选择一个并删除另一个即可。
答案 2 :(得分:0)
颜色
您缺少asp-rout-color =“ docu”的最后一部分