Як вказати атрибути даних у бритві, наприклад, 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

5
Просто перетворіть це: new {data_test = "true"}) -> новий словник <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.