Saya punya HTML aman / bersih yang disimpan dalam tabel DB.
Bagaimana saya bisa membuat konten HTML ini ditulis dalam tampilan Razor?
Itu selalu lolos dari karakter seperti <
dan ampersand ke &
.
Saya punya HTML aman / bersih yang disimpan dalam tabel DB.
Bagaimana saya bisa membuat konten HTML ini ditulis dalam tampilan Razor?
Itu selalu lolos dari karakter seperti <
dan ampersand ke &
.
@Html.Raw()
Jawaban:
Andaikata konten Anda ada di dalam sebuah string bernama
mystring
...Kamu bisa menggunakan:
Atau Anda dapat mengkonversi string Anda ke
HtmlString
atau jenis lain yang mengimplementasikanIHtmlString
dalam model atau langsung inline dan gunakan biasa@
:sumber
razor
sintaks danHtml.Raw
pasti tersedia untuk saya.Di ASP.NET MVC 3 Anda harus melakukan sesuatu seperti ini:
sumber
Kamu bisa menggunakan
sumber
Html.Raw()
tidak berfungsi di sanaTerkadang sulit untuk menggunakan html mentah. Sebagian besar karena kerentanan XSS. Jika itu merupakan masalah, tetapi Anda masih ingin menggunakan html mentah, Anda dapat menyandikan bagian-bagian yang menakutkan.
Hasil dalam
sumber
Anda bisa meletakkan string Anda ke dalam viewdata di controller seperti ini:
Dan kemudian panggil viewdata tersebut dalam tampilan seperti ini:
sumber
Selain menggunakan
@MvcHtmlString.Create(ViewBag.Stuff)
seperti yang disarankan oleh Dommer, saya sarankan Anda juga menggunakan perpustakaan AntiXSS seperti yang disarankan phill http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspxIni mengkodekan hampir semua string serangan XSS yang mungkin.
sumber
Contoh lengkap untuk menggunakan fungsi template di RazorEngine (untuk pembuatan email, misalnya):
sumber