Как указать атрибуты данных в razor, например, data-externalid = «23151» в @ this.Html.CheckBoxFor (…)

122
@this.Html.CheckBoxFor(m => m.MyModel.MyBoolProperty, new { @class="myCheckBox", extraAttr="23521"})

С бритвой я не могу указать значения для атрибутов данных, таких как data-externalid="23521"

Есть ли способ сделать это с помощью @this.Html.CheckBoxFor(...)?

Ян Дэвис
источник

Ответы:

268
@Html.CheckBoxFor(
    m => m.MyModel.MyBoolProperty, 
    new { 
        @class = "myCheckBox", 
        data_externalid = "23521"
    }
)

В результирующей разметке _автоматически преобразуется -в:

<input type="checkbox" name="MyModel.MyBoolProperty" data-externalid="23521" class="myCheckBox" />

И это верно для всех помощников Html, принимающих htmlAttributesанонимный объект в качестве аргумента, а не только для CheckBoxForпомощников.

Дарин Димитров
источник
4
вау, я вижу, что преобразование '_' '-' действительно сбивает с толку ... особенно, если кто-то выполняет строковый поиск по заданному атрибуту данных. Есть другой способ?
RayLoveless 08
5
Просто преобразуйте это: new {data_test = "true"}) -> new Dictionary <string, object> {{"data-test", "true"}});
Доминик Александр
1
И если вам нужно, чтобы значение было получено из вашей ViewModel; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Я пришел за помощью по этой теме, и это было то, что мне было нужно. :)
Скотт Фрэйли
Спустя более 8 лет этот ответ очень сильно мне помог. Я не мог понять, почему добавление моего тега vue form v-model не работает. Вместо этого мне пришлось использовать v_model = "blah".
Эндрю Джуниор Ховард