Как поддерживать параметры htmlAttributes в расширениях HtmlHelper? - PullRequest
7 голосов
/ 12 марта 2012

Я создаю методы расширения HtmlHelper.Многие из встроенных каркасных методов поддерживают такие параметры, как htmlAttributes (типа object), которые отображаются в результирующем HTML.Как я могу обеспечить перегрузки моих собственных методов, которые также поддерживают параметр htmlAttributes, не переписывая логику конкатенации строк, чтобы отобразить их как атрибуты тега?

1 Ответ

17 голосов
/ 12 марта 2012

У объекта HtmlHelper есть метод, который преобразует объект в словарь имя / значение, который затем можно объединить с тегом при его создании.Например, этот код сгенерирует тег <script>, в который будут переданы дополнительные атрибуты:

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes) as IDictionary<string, object>;

TagBuilder tag = new TagBuilder("script");
tag.MergeAttributes(attributes);
tag.MergeAttribute("type", "text/javascript");
tag.MergeAttribute("src", scriptPath);

Вы можете либо предоставить перегрузки, либо использовать значения по умолчанию для предоставления значения null для htmlAttributes,который выдаст пустое значение Dictionary.

(Метод также дезинфицирует имена атрибутов в допустимые атрибуты HTML и т. д., поэтому его можно использовать практически с любым объектом.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...