Saya memiliki kontrol textarea yang menerima input. Saya mencoba nanti merender teks itu ke tampilan hanya dengan menggunakan:
@ Model.CommentText
Ini dengan benar mengkodekan nilai apa pun. Namun, saya ingin mengganti karakter pemisah baris dengan <br />
dan saya tidak dapat menemukan cara untuk memastikan bahwa tag br baru tidak disandikan. Saya telah mencoba menggunakan HtmlString tetapi belum beruntung.
asp.net-mvc
asp.net-mvc-3
razor
Bkaid
sumber
sumber
\n
dalam database dan Anda ingin mengonversi menjadi<br />
?Jawaban:
Gunakan properti white-space CSS alih-alih membuka diri Anda terhadap kerentanan XSS!
sumber
pre-line
(saya hanya mengetahuinowrap
danpre
).white-space: pre-wrap;
lebih baik karenapre-line
akan mengacaukan teks Anda dengan mengelompokkan spasi putih menjadi satu ruang.Coba yang berikut ini:
Memperbarui:
Menurut
marcind's
komentar pada pertanyaan terkait ini , tim ASP.NET MVC mencari untuk mengimplementasikan sesuatu yang mirip dengan<%:
dan<%=
untuk mesin tampilan Razor.Pembaruan 2:
Kami dapat mengubah pertanyaan apa pun tentang penyandian HTML menjadi diskusi tentang input pengguna yang berbahaya, tetapi sudah cukup.
Pokoknya, berhati-hatilah terhadap input pengguna potensial yang berbahaya.
Pembaruan 3 (Asp.Net MVC 3):
sumber
<script>
.\n
bukan\r\n
Berpisah pada baris baru (agnostik lingkungan) dan mencetak secara teratur - tidak perlu khawatir tentang penyandian atau xss:
(menghapus entri kosong adalah opsional)
sumber
Solusi ketiga Omar sebagai Helper HTML adalah:
sumber
Menerapkan prinsip KERING untuk solusi Omar, berikut ini adalah ekstensi HTML Helper:
Penggunaan (dengan regex yang ditingkatkan):
Ini juga memiliki manfaat tambahan dengan mengurangi tanggung jawab pada pengembang Razor View untuk memastikan keamanan dari kerentanan XSS.
Kekhawatiran saya dengan solusi Jacob adalah membuat rendering baris dengan CSS merusak semantik HTML .
sumber
Saya perlu memecah beberapa teks menjadi paragraf ("p" tag), jadi saya membuat pembantu sederhana menggunakan beberapa rekomendasi di jawaban sebelumnya (terima kasih kawan).
Pemakaian:
sumber
Saya lebih suka metode ini karena tidak memerlukan markup memancarkan secara manual. Saya menggunakan ini karena saya memberikan Halaman Razor ke string dan mengirimkannya melalui email, yang merupakan lingkungan di mana penataan ruang putih tidak akan selalu berfungsi.
sumber