我创建了一个绑定来为Html.ActionLink
html帮助器创建一个标签,这样可以正常工作:
<element name="actionlink">
Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}})
</element>
使用像<actionlink action="index" route-controller="users" route-id="${Model.Id}"/>
这样的标记可以正确地创建锚标记,并使用正确的href
属性。
然而,我已经尝试重载此标记上的绑定,以便我可以添加html属性,如id,class等,如下所示:
<element name="actionlink">
Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}, new Dictionary[[string,object]]{{"@*"}})
</element>
您会注意到它将通配符传递给最后一个Dictionary参数,该参数是HtmlHelper
的html属性参数。但是,当我以下列方式使用actionlink标记时:
<actionlink action="index" route-controller="users" route-id="${Model.Id}" id="linkId" class="className"/>
它创建与上述用法相同的标记,即它不包含id
和class
html属性。我在这里做了一些根本错误的事吗?任何人都可以看到不正确的内容吗?
答案 0 :(得分:1)
使用绑定时,您必须注意的是绑定按声明的顺序进行匹配,因此如果您按照上面指定的顺序声明了绑定,则第二个绑定永远不会匹配。 / p>
如果您将绑定切换到下面的顺序,那么它应该起作用:
<!-- most specific binding first -->
<element name="actionlink">
Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}, new Dictionary[[string,object]]{{"@*"}})
</element>
<element name="actionlink">
Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}})
</element>
此外,在使用绑定时,您需要注意在重建解决方案之前不会获取更改,因此如果您进行更改,它们可能是正确的,但它可能看起来不像是因为你还没有重建而被捡起来。