помощник HTML берет словарь <строка, объект>, как использовать этот параметр?

Если помощник HTML берет idictionary в качестве параметра, как я использую его?

Я попробовал:

<%= Html.Blah( new { id = "blah" }) %>

Но это не работает.

16
задан Blankman 15 July 2010 в 15:33
поделиться

3 ответа

<%= Html.Blah( new Dictionary<string, object>(){
                                                   { "key", "value" },
                                                   { "key1", someObj },
                                                   { "blah", 1 }
                                               } );
27
ответ дан 30 November 2019 в 16:30
поделиться

Если вы не хотите использовать общий словарь, Hashtable также реализует IDictionary.

 Html.Blah(new Hashtable(){
                        {"id", "blah"}
                    });
1
ответ дан 30 November 2019 в 16:30
поделиться

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

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

    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 делает некоторые размышления, чтобы иметь возможность определить свойства объекта. Просто имейте в виду, если вас это беспокоит.

4
ответ дан 30 November 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: