Saya mencoba membuat email dengan konten HTML. konten ini sudah melalui sanitasi jadi saya tidak khawatir tentang itu, namun ketika saya menelepon:
Razor.Parse(template, model);
pada template Razor berikut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body>
@(new System.Web.HtmlString(Model.EmailContent))
</body>
</html>
email yang dikeluarkan adalah HTMl dikodekan, tapi saya membutuhkannya diterjemahkan. Bagaimana saya bisa melakukannya?
c#
razor
html-encode
KallDrexx
sumber
sumber
Jawaban:
RazorEngine, seperti MVC Razor View Engine, akan secara otomatis menyandikan nilai yang ditulis ke template. Untuk menyiasati ini, kami telah memperkenalkan antarmuka yang dipanggil
IEncodedString
, dengan implementasi default adalahHtmlEncodedString
danRawString
.Untuk menggunakan yang terakhir, cukup lakukan panggilan ke
Raw
metode bawaan dariTemplateBase
:sumber
FYI saya memiliki garpu yang menyertakan sintaks @ Html.Raw (...) di sini:
https://github.com/Antaris/RazorEngine/pull/105
sumber
Jika Anda memiliki kelas dasar khusus untuk template Anda, Anda dapat mengkodekan
Write
metode untuk berperilaku mirip dengan template MVC normal: jika nilai keluarannyaIHtmlString
tidak boleh mengenkodenya.Inilah kode yang saya gunakan di
TemplateBase
kelas saya :sumber
Saya menggunakan RazorEngine 3.8.2 dan
@Raw(Model.Content)
bekerja dengan baik untuk saya.sumber
Membuat pembungkus untuk RazorEngine yang menambahkan dukungan untuk
@Html.Raw()
dan@Html.Partial()
https://github.com/b9chris/RazorEngineComplete
sumber
Saya menemukan semua ini berhasil dengan saya.
sumber