Làm cách nào để thoát văn bản để sử dụng html trong C #? tôi muốn làm
sample="<span>blah<span>"
và có
<span>blah<span>
hiển thị dưới dạng văn bản thuần thay vì blah chỉ với phần thẻ của html :(. Sử dụng C # không phải là ASP
Làm cách nào để thoát văn bản để sử dụng html trong C #? tôi muốn làm
sample="<span>blah<span>"
và có
<span>blah<span>
hiển thị dưới dạng văn bản thuần thay vì blah chỉ với phần thẻ của html :(. Sử dụng C # không phải là ASP
Câu trả lời:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Ngoài ra, bạn có thể sử dụng điều này nếu bạn không muốn sử dụng System.Web
lắp ráp:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Mỗi bài viết này , sự khác biệt giữa System.Security.SecurityElement.Escape()
và System.Web.HttpUtility.HtmlEncode()
là cựu cũng mã hóa dấu nháy đơn (')
ký tự.
SecurityElement.Escape()
thoát cho XML mà không chính xác là HTML.
Nếu bạn đang sử dụng .NET 4 trở lên và bạn không muốn tham khảo System.Web
, bạn có thể sử dụng WebUtility.HtmlEncode
từSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Điều này có tác dụng tương tự HttpUtility.HtmlEncode
và nên được ưu tiên hơn System.Security.SecurityElement.Escape
.
SecurityElement.Escape
hoạt động trên XML và HtmlEncode
hoạt động trên HTML, và mã hóa XML và HTML có các yêu cầu hơi khác nhau (xem câu trả lời này để biết chi tiết). Vì vậy, ví dụ, SecurityElement.Escape
được phép sử dụng '
, trong khi HtmlEncode
thì không.
chưa ai đề cập đến, trong ASP.NET 4.0 có cú pháp mới để làm điều này. thay vì
<%= HttpUtility.HtmlEncode(unencoded) %>
bạn chỉ có thể làm
<%: unencoded %>
đọc thêm tại đây: 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
Bạn có thể sử dụng các thẻ html thực tế <xmp>
và </xmp>
để xuất chuỗi như thể hiển thị tất cả các thẻ ở giữa các thẻ xmp.
Hoặc bạn cũng có thể sử dụng trên máy chủ Server.UrlEncode
hoặc HttpUtility.HtmlEncode
.
Không thấy điều này ở đây
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
đó là điều duy nhất hoạt động (asp 4.0+) khi xử lý html như thế này. Việc '
được kết xuất dưới dạng '
(sử dụng htmldecode) trong html, khiến nó bị lỗi:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
có một số ký tự trích dẫn đặc biệt không bị xóa bởi HtmlEncode và sẽ không được hiển thị trong Edge hoặc IE một cách chính xác như Trực và Hồi. bạn có thể thay thế các ký tự này bằng một cái gì đó như chức năng dưới đây.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}