Atribut html dengan tanda penghubung dengan asp.net mvc

111

Apakah ada sintaks yang lebih baik saat membuat elemen dengan atribut bertanda hubung daripada menggunakan:

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>

Melihat spesifikasi HTML untuk standar yang diusulkan HTML 5 dan WIA ARIA tampaknya tanda hubung dalam atribut HTML direncanakan untuk menjadi lebih umum sebagai semacam spasi nama sederhana.

Misalnya HTML 5 mengusulkan atribut khusus diawali dengan data-dan WIA ARIA menggunakan aria-awalan untuk semua atribut WIA ARIA.

Saat menggunakan pembantu HTML di ASP.NET MVC seperti <%= Html.TextBox("name", value, new { attribute = attributeValue }) %>objek anonim diubah ke kamus.

Sayangnya di C # tidak ada dukungan untuk tanda hubung pada nama, jadi satu-satunya alternatif adalah membuat kamus. Sintaks yang sangat bertele-tele, apakah ada yang melihat alternatif yang lebih baik atau cara sederhana untuk mengubah fungsionalitas ekstensi HTML ASP.NET MVC tanpa harus menulis ulang seluruh ekstensi?

Chris Chilvers
sumber

Jawaban:

202

Gunakan garis bawah di nama atribut data, dan itu akan secara ajaib menanganinya untuk Anda, mengubahnya menjadi tanda hubung. Ia tahu Anda menginginkan tanda hubung daripada garis bawah karena garis bawah tidak valid dalam nama atribut html.

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>
ED-209
sumber
2
Saya menemukan masalah serupa di beberapa pertanyaan SO, dan ini adalah jawaban terbaik.
pengguna2780436
Bisakah Anda menambahkan alasan mengapa garis bawah pernyataan Anda tidak valid di atribut html . Setidaknya html 4.01 status : Nilai atribut hanya boleh berisi huruf (az dan AZ), angka (0-9), tanda hubung (desimal ASCII 45), titik (desimal ASCII 46), garis bawah (desimal ASCII 95), dan titik dua ( ASCII desimal 58) ,
surfmuggle
@threeFourOneSixOneThree kutipan Anda mengacu pada nilai atribut, tetapi dalam pertanyaan ini kita mengacu pada nama atribut.
ED-209
@threeFourOneSixOneThree Saya telah mengubah akhir jawaban saya menjadi 'garis bawah tidak valid dalam nama atribut html'
ED-209
19

Jawaban yang diberikan di ActionLink htmlAttributes menyarankan penggunaan garis bawah, bukan tanda hubung. MVC.Net seharusnya memancarkan tanda hubung alih-alih garis bawah saat mengirim halaman ke browser.

Zarepheth
sumber