Saya mencoba menggunakan atribut data HTML5 dalam proyek ASP.NET MVC 1 saya. (Saya seorang pemula C # dan ASP.NET MVC.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
"Data-detail" di htmlAttributes di atas memberikan kesalahan berikut:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Ini bekerja ketika saya menggunakan data_details, tapi saya kira itu harus dimulai dengan "data-" sesuai spesifikasi.
Pertanyaan saya:
- Apakah ada cara untuk membuatnya berfungsi dan menggunakan atribut data HTML5 dengan Html.ActionLink atau pembantu Html serupa?
- Apakah ada mekanisme alternatif lain untuk melampirkan data khusus ke suatu elemen? Data ini akan diproses nanti oleh JS.
asp.net-mvc
html
custom-data-attribute
Shameem
sumber
sumber
Jawaban:
Pembaruan: MVC 3 dan versi yang lebih baru memiliki dukungan bawaan untuk ini. Lihat jawaban JohnnyO yang sangat terunggul di bawah ini untuk solusi yang disarankan.
Saya tidak berpikir ada pembantu langsung untuk mencapai ini, tetapi saya punya dua ide untuk Anda coba:
Hanya ide, belum mengujinya.
sumber
Masalah ini telah diatasi dalam ASP.Net MVC 3. Mereka sekarang secara otomatis mengkonversi garis bawah dalam properti atribut html ke tanda hubung. Mereka beruntung dalam hal ini, karena garis bawah tidak sah dalam atribut html, jadi MVC dapat dengan yakin menyatakan bahwa Anda ingin tanda hubung saat Anda menggunakan garis bawah.
Sebagai contoh:
akan membuat ini dalam MVC 3:
Jika Anda masih menggunakan versi MVC yang lebih lama, Anda bisa meniru apa yang dilakukan MVC 3 dengan membuat metode statis yang saya pinjam dari kode sumber MVC3:
Dan kemudian Anda dapat menggunakannya seperti ini:
dan ini akan membuat atribut data- * yang benar:
sumber
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
tetapi keHtml.Something()
metode MVC3 . Mungkin saja yangWebGrid
belum ditingkatkan dengan cara yang sama, atau Anda dapat memeriksa versi diSystem.Web.Helpers.dll
Ini bahkan lebih mudah dari semua yang disarankan di atas. Atribut data dalam MVC yang mencakup tanda hubung (-) dipenuhi dengan penggunaan garis bawah (_).
Saya melihat JohnnyO sudah menyebutkan ini.
sumber
Dalam mvc 4 Dapat diterjemahkan dengan Garis Bawah ("_")
Pisau cukur:
Html yang Diberikan
sumber
data-date
atribut, Bagaimana saya bisa mempostingnya ke controller / action? Juga apa% 23 di sanaAnda dapat menerapkan ini dengan fungsi ekstensi pembantu HTML yang baru yang kemudian akan digunakan mirip dengan ActionLinks yang ada.
Dan Anda menyebutnya seperti itu ...
Simples :-)
sunting
sedikit lebih banyak menulis di sini
sumber
Saya akhirnya menggunakan hyperlink normal bersama
Url.Action
, seperti pada:Ini lebih buruk, tetapi Anda memiliki kontrol lebih besar atas
a
tag, yang kadang-kadang berguna di situs AJAXified.HTH
sumber
Saya tidak suka menggunakan tag "a" murni, terlalu banyak mengetik. Jadi saya datang dengan solusi. Dalam pandangannya terlihat
Implementasi kelas Dic
sumber
t
pada akhirnya setidaknya!Anda bisa menggunakannya seperti ini:
Dalam Mvc:
Dalam Html:
sumber