The dokumentasi untuk MvcHtmlString
tidak terlalu mencerahkan:
Merupakan string yang dikodekan HTML yang seharusnya tidak dikodekan lagi.
Tidak jelas bagi saya apa implikasi sebenarnya dari ini. Tampaknya beberapa metode HTML helper mengembalikan sebuah MvcHtmlString
, tetapi beberapa contoh yang saya lihat online dari custom helpers hanya mengembalikan string biasa.
Pertanyaan:
Apa itu MvcHtmlString
?
Ketika saya harus memilih MvcHtmlString
lebih string
dan sebaliknya? Mengapa?
sumber
MvcHtmlString
tidak mengimplementasikanIHtmlString
karena hanya ada di 4.<%:
Sintaks harus tipe bebek - itu akan selalu memanggil.ToHtmlString()
sebelumnya.ToString()
terlepas dari antarmuka.MvcHtmlString.Create
metode ini mendeteksi apakahIHtmlString
tersedia dan secara dinamis membuat kelas yang dikembalikan untuk mendukungnya jika: windowsitpro.com/article/net-framework/Encoding-and-Strings/…Ini adalah jawaban yang terlambat tetapi jika ada orang yang membaca pertanyaan ini menggunakan pisau cukur, yang harus Anda ingat adalah bahwa pisau cukur mengkodekan semuanya secara default, tetapi dengan menggunakan
MvcHtmlString
bantuan html Anda, Anda dapat memberi tahu pisau cukur bahwa itu tidak perlu dikodekan .Jika Anda ingin pisau cukur tidak mengkodekan penggunaan string
Decompiling Raw (), menunjukkan kepada kita bahwa itu membungkus string dalam HtmlString
" HtmlString hanya ada di ASP.NET 4.
MvcHtmlString adalah shim kompatibilitas ditambahkan ke MVC 2 untuk mendukung keduanya. NET 3.5 dan .NET 4. Sekarang MVC 3 adalah .NET 4 saja, itu adalah subkelas HtmlString yang cukup sepele mungkin untuk MVC 2-> 3 untuk kompatibilitas sumber. " sumber
sumber
Penggunaan praktis yang baik dari ini adalah jika Anda ingin membuat
HtmlHelper
ekstensi sendiri . Misalnya, saya benci mencoba mengingat<link>
sintaks tag, jadi saya telah membuat metode ekstensi saya sendiri untuk membuat<link>
tag:Saya bisa saja kembali
String
dari metode ini, tetapi jika saya memiliki yang berikut ini akan rusak:<%: Html.CssBlock(Url.Content("~/sytles/mysite.css")) %>
Dengan
MvcHtmlString
, menggunakan salah satu<%: ... %>
atau<%= ... %>
keduanya akan bekerja dengan benar.sumber
Anda akan menggunakan
MvcHtmlString
jika Anda ingin meneruskan HTML mentah ke metode bantuan MVC dan Anda tidak ingin metode bantuan untuk menyandikan HTML.sumber
MvcHtmlString
dari metode pembantu HTML?