我用模板">/文档/{类别?}创建了一个路由/{功能?}"并将其命名为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((,它可以工作,但我不知道我是否可以在标记帮助程序中访问它。
有什么建议吗?
就像异常告诉你的那样,这里的主要问题是你同时使用两者
asp-page-handler
和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);
});