Anda seharusnya menggunakan IHtmlString
:
IHtmlString str = new HtmlString("<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>");
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:
@Html.Raw(str)
Dibandingkan dengan:
@str
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
atau Html.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 menggunakan IHtmlString
sebagai tipe properti). Melihat sesuatu seperti @Html.Encode(str)
itu agak mengkhawatirkan, kecuali Anda melakukan ini hanya untuk menyederhanakan contoh Anda.
Html.Raw
harus membantu.