Saya memiliki pengontrol yang menghasilkan string yang berisi markup html. Sekarang ketika saya menampilkannya pada tampilan, itu ditampilkan sebagai string sederhana yang berisi semua tag. Saya mencoba menggunakan helper Html untuk menyandikan / mendekode untuk menampilkannya dengan benar, tetapi tidak berhasil.
string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>";
Menurut pandangan saya,
@Html.Encode(str)
c#
asp.net
asp.net-mvc
asp.net-mvc-4
Mukesh Sharma
sumber
sumber
Html.Raw
harus membantu.HtmlStrin
kelas, seperti dalamHtmlString str = new HtmlString("<span>Some HTML here</span>");
Jawaban:
Anda dekat yang ingin Anda gunakan
@Html.Raw(str)
@Html.Encode
mengambil string dan memastikan bahwa semua karakter khusus ditangani dengan benar. Ini termasuk karakter seperti spasi.sumber
Anda seharusnya menggunakan
IHtmlString
:Setiap kali Anda memiliki properti model atau variabel yang perlu menampung HTML, saya rasa ini umumnya merupakan praktik yang lebih baik. Pertama-tama, ini sedikit lebih bersih. Sebagai contoh:
Dibandingkan dengan:
Selain itu, menurut saya ini sedikit lebih aman vs. menggunakan
@Html.Raw()
, karena kekhawatiran apakah data Anda adalah HTML disimpan di pengontrol. Dalam lingkungan di mana Anda memiliki pengembang front-end vs. back-end, pengembang back-end Anda mungkin lebih selaras dengan data apa yang dapat menyimpan nilai HTML, sehingga menjaga masalah ini di back-end (pengontrol).Saya biasanya mencoba untuk menghindari penggunaan
Html.Raw()
bila memungkinkan.Satu hal lain yang perlu diperhatikan, adalah saya tidak yakin di mana Anda menugaskan
str
, tetapi beberapa hal yang menjadi perhatian saya tentang bagaimana Anda dapat menerapkan ini.Pertama, ini harus dilakukan di pengontrol, terlepas dari solusi (
IHtmlString
atauHtml.Raw
) Anda. Anda harus menghindari logika seperti ini dalam pandangan Anda, karena itu sebenarnya bukan miliknya.Selain itu, Anda harus menggunakan Anda
ViewModel
untuk mendapatkan nilai ke tampilan Anda (dan sekali lagi, idealnya menggunakanIHtmlString
sebagai tipe properti). Melihat sesuatu seperti@Html.Encode(str)
itu agak mengkhawatirkan, kecuali Anda melakukan ini hanya untuk menyederhanakan contoh Anda.sumber
kamu bisa memakai
@Html.Raw(str)
Lihat MSDN untuk lebih lanjut
sumber
Saya memiliki masalah serupa dengan bidang input HTML di MVC. Halaman web hanya menampilkan kata kunci pertama dari bidang tersebut. Contoh: kolom masukan: "The quick brown fox" Nilai yang ditampilkan: "The"
Solusinya adalah menempatkan variabel dalam tanda kutip dalam pernyataan nilai sebagai berikut:
sumber
Saya mengalami masalah yang sama baru-baru ini, dan Google membawa saya ke sini, jadi saya taruh jawaban ini di sini seandainya orang lain juga mendarat di sini, untuk kelengkapan.
Saya perhatikan bahwa ketika saya memiliki format html yang buruk , saya sebenarnya telah menghapus semua tag html saya , dengan hanya konten non-tag yang tersisa . Saya terutama memiliki tabel dengan tag tabel pembuka yang hilang, dan kemudian semua tag html saya dari seluruh string di mana robek sepenuhnya.
Jadi, jika cara di atas tidak berhasil, dan Anda masih menggaruk-garuk kepala, periksa juga html Anda apakah valid.
Saya perhatikan bahkan setelah saya membuatnya berfungsi, MVC menambahkan tag tbody di mana saya tidak memilikinya. Ini memberi tahu saya bahwa ada pembersihan yang terjadi (MVC 5), dan bahwa jika tidak dapat terjadi, semua / beberapa tag akan dihapus.
sumber