Cara menentukan atribut data di pisau cukur, misalnya, data-externalid = "23151" di @ this.Html.CheckBoxFor (…)

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

Dengan pisau cukur, saya tidak dapat menentukan nilai untuk atribut data seperti data-externalid="23521"

Apakah ada cara untuk melakukan ini dengan menggunakan @this.Html.CheckBoxFor(...)?

Ian Davis
sumber

Jawaban:

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

Secara _otomatis akan dikonversi ke -dalam markup yang dihasilkan:

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

Dan itu benar untuk semua pembantu HTML yang menggunakan htmlAttributesobjek anonim sebagai argumen, tidak hanya CheckBoxForpembantu.

Darin Dimitrov
sumber
4
wow, saya dapat melihat konversi '_' '-' menjadi sangat membingungkan ... terutama jika seseorang melakukan pencarian string untuk mencari atribut data tertentu. Apakah ada cara lain?
RayLoveless
5
Ubah saja ini: new {data_test = "true"}) -> Kamus baru <string, object> {{"data-test", "true"}});
Dominique Alexandre
1
Dan jika Anda membutuhkan nilai yang berasal dari ViewModel; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Saya datang mencari bantuan tentang topik ini dan inilah yang saya butuhkan. :)
Scott Fraley
Lebih dari 8 tahun kemudian, jawaban ini sangat membantu saya. Saya tidak tahu mengapa menambahkan tag vue form v-model saya tidak akan berfungsi. Saya harus menggunakan v_model = "blah" sebagai gantinya.
Andrew Junior Howard