Bagaimana cara meloloskan teks untuk penggunaan html di C #? aku ingin melakukan
sample="<span>blah<span>"
dan memiliki
<span>blah<span>
muncul sebagai teks biasa, bukan bla hanya dengan tag bagian dari html :(. Menggunakan C # bukan ASP
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Juga, Anda dapat menggunakan ini jika Anda tidak ingin menggunakan
System.Web
rakitan:var encoded = System.Security.SecurityElement.Escape(unencoded)
Berdasarkan artikel ini , perbedaan antara
System.Security.SecurityElement.Escape()
danSystem.Web.HttpUtility.HtmlEncode()
adalah bahwa yang pertama juga menyandikan(')
karakter apostrof .sumber
SecurityElement.Escape()
escapes untuk XML yang tidak persis HTML.Jika Anda menggunakan .NET 4 atau lebih tinggi dan Anda tidak ingin referensi
System.Web
, Anda dapat menggunakanWebUtility.HtmlEncode
dariSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Ini memiliki efek yang sama
HttpUtility.HtmlEncode
dan lebih disukai daripadaSystem.Security.SecurityElement.Escape
.sumber
SecurityElement.Escape
beroperasi pada XML danHtmlEncode
beroperasi pada HTML, dan pengkodean XML dan HTML memiliki persyaratan yang sedikit berbeda (lihat jawaban ini untuk detailnya). Jadi, misalnyaSecurityElement.Escape
diperbolehkan menggunakan'
, sedangkanHtmlEncode
tidak.belum ada yang menyebutkan, di ASP.NET 4.0 ada sintaks baru untuk melakukan ini. dari pada
Anda bisa melakukannya
baca lebih lanjut di sini: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- asp-net-mvc-2.aspx
sumber
.NET 4.0 dan yang lebih baru:
using System.Web.Security.AntiXss; //... var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
sumber
Anda dapat menggunakan tag html yang sebenarnya
<xmp>
dan</xmp>
menampilkan string sebagaimana untuk menampilkan semua tag di antara tag xmp.Atau bisa juga digunakan di server
Server.UrlEncode
atauHttpUtility.HtmlEncode
.sumber
<xmp>
sudah lama tidak digunakan lagi: stackoverflow.com/questions/8307846/… gunakan<pre>
sebagai gantinyaTidak melihat ini di sini
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
itu adalah satu-satunya hal yang berhasil (asp 4.0+) ketika berhadapan dengan html seperti ini. Itu
'
akan dirender sebagai'
(menggunakan htmldecode) di html, menyebabkannya gagal:<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
sumber
ada beberapa karakter tanda kutip khusus yang tidak dihapus oleh HtmlEncode dan tidak akan ditampilkan di Edge atau IE dengan benar seperti "dan". Anda dapat mengganti karakter ini dengan fungsi seperti di bawah ini.
private string RemoveJunkChars(string input) { return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\"")); }
sumber
Bagi mereka di masa depan yang mencari cara sederhana untuk melakukan ini di halaman Razor, gunakan yang berikut ini:
Dalam .cshtml:
@Html.Raw(Html.Encode("<span>blah<span>"))
Dalam .cshtml.cs:
string rawHtml = Html.Raw(Html.Encode("<span>blah<span>"));
sumber