Как указать атрибуты данных в 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".
Эндрю Джуниор Ховард
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.