Перегрузка искрового крепления двигателя - PullRequest
1 голос
/ 28 февраля 2012

Я создал привязку для создания тега для 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, класс и т. Д., Например:

<element name="actionlink">
    Html.ActionLink("child::*", "@action", new RouteValueDictionary{{"@route-*"}}, new Dictionary[[string,object]]{{"@*"}})
</element>

Вы заметите, что он имеет подстановочный знак, передаваемый последнему параметру Dictionary, который является параметром html attribute HtmlHelper. Однако, когда я использую тег actionlink следующим образом:

<actionlink action="index" route-controller="users" route-id="${Model.Id}" id="linkId" class="className"/>

Создает ту же разметку, что и при использовании выше, т. Е. Не содержит атрибуты id и class html. Я делаю что-то в корне не так? Кто-нибудь может увидеть, что не так?

1 Ответ

1 голос
/ 01 марта 2012

При использовании привязок следует помнить, что привязки сопоставляются в порядке их объявления, поэтому, если привязки объявлены в порядке, указанном выше, вторая привязка никогда не будет сопоставлена.

Если вы переключите привязки в порядке, указанном ниже, то он должен работать:

<!-- 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>

Кроме того, при использовании привязок вы должны знать, что изменения не будут восприняты до тех пор, пока вы не перестроите свое решение, поэтому, если вы вносите изменения, они могут быть правы, но это может выглядеть не так, как будто они забрать, потому что вы еще не восстановили.

...