Встроенные методы расширения HtmlHelper обычно предоставляют перегрузки, которые принимают параметр object
вместо IDictionary<string, object>
, чтобы позволить вам вызывать их, используя анонимный тип, как вы пытались.
Если этосвой собственный метод, вы можете создать другой метод расширения, который будет выглядеть примерно так:
public static string Blah(this HtmlHelper html, object htmlAttributes)
{
return html.Blah(new RouteValueDictionary(htmlAttributes));
}
Конструктор RouteValueDictionary принимает объект и заполняет себя, используя открытые свойства переданного объекта. Я считаю, что это обычновстроенные методы расширения HtmlHelper делают то же самое.
Кроме того, вы можете вызвать метод следующим образом:
html.Blah(new RouteValueDictionary(new { id = "blah" }));
Я не смотрел, но кажется очевидным, что класс RouteValueDictionaryделает некоторые отражения, чтобы иметь возможность идентифицировать свойства объекта.Просто знайте, если это то, что вас беспокоит.