Html5 data- * dengan asp.net mvc TextboxFor atribut html

244

Bagaimana cara menambahkan data-*atribut html menggunakan TextboxFor?

Inilah yang saat ini saya miliki:

@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })

Seperti yang Anda lihat, -ini menyebabkan masalah di sini data-url. Bagaimana dengan ini?

Shawn Mclean
sumber

Jawaban:

417

Anda dapat menggunakan garis bawah ( _) dan helper cukup cerdas untuk melakukan sisanya:

@Html.TextBoxFor(
    model => model.Country.CountryName, 
    new { data_url = Url.Action("CountryContains", "Geo") }
)

Dan bagi mereka yang ingin mencapai hal yang sama dalam versi ASP.NET MVC 3 pra mereka dapat:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>
Darin Dimitrov
sumber
8
Apakah perilaku ini ditentukan di mana saja :)?
Rookian
5
@Ryan, tidak, itu tidak berhasil karena tidak masuk akal EditorFor. Penolong EditorFor digunakan untuk membuat templat HTML khusus yang sesuai dengan jenis yang diberikan. Templat dapat berisi banyak elemen, jadi berbicara tentang atribut dalam templat tidak masuk akal. Tentu saja Anda selalu dapat menulis templat khusus yang berfungsi dengan additionalViewDataparameter yang dapat diteruskan ke templat editor dan hanya menampilkannya sebagai atribut pada bidang input yang sesuai.
Darin Dimitrov
2
Untuk memperjelas markup yang dihasilkan memiliki garis bawah dan bukan tanda hubung. Kalimat "Anda dapat menggunakan garis bawah (_) dan penolong cukup cerdas untuk melakukan sisanya", khususnya sedikit tentang kecerdasan yang seharusnya membuat saya percaya itu akan otomatis dikonversi ke - tetapi tidak. HTML5 mendukung -.
Alan Macdonald
2
@AlanMacdonald yang _dikonversi ke -versi MVC yang lebih lama (tengah?). Mungkin versi terbaru telah menjatuhkannya, tapi saya berhasil menggunakannya di MVC 3 dan 4.
brichins
4
@AlanMacdonald (dan yang lain membaca), _dikonversi ke -dalam MVC 5 juga. Saya berhasil menggunakannya dalam proyek yang sedang saya kerjakan, yang menggunakan MVC 5.
Amy Barrett