Jak zmienić znaczenie tekstu do użycia w języku HTML w języku C #? chcę zrobić
sample="<span>blah<span>"
i mają
<span>blah<span>
wyświetlają się jako zwykły tekst zamiast bla tylko z tagami części html :(. Używając C #, a nie ASP
Jak zmienić znaczenie tekstu do użycia w języku HTML w języku C #? chcę zrobić
sample="<span>blah<span>"
i mają
<span>blah<span>
wyświetlają się jako zwykły tekst zamiast bla tylko z tagami części html :(. Używając C #, a nie ASP
Odpowiedzi:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Możesz również użyć tego, jeśli nie chcesz używać System.Webzestawu:
var encoded = System.Security.SecurityElement.Escape(unencoded)
W tym artykule różnica między System.Security.SecurityElement.Escape()i System.Web.HttpUtility.HtmlEncode()polega na tym, że ten pierwszy koduje również (')znaki apostrofów .
SecurityElement.Escape()ucieczkach dla XML, który nie jest dokładnie HTML.
Jeśli używasz platformy .NET 4 lub nowszej i nie chcesz odwoływać się do niej System.Web, możesz użyć WebUtility.HtmlEncodefromSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Ma to taki sam efekt, jak HttpUtility.HtmlEncodei powinno być preferowane System.Security.SecurityElement.Escape.
SecurityElement.Escapedziała na XML i HtmlEncodeoperuje na HTML, a kodowanie XML i HTML ma nieco inne wymagania (szczegóły w tej odpowiedzi ). Na przykład SecurityElement.Escapemożna go używać ', a HtmlEncodenie.
nikt jeszcze nie wspomniał, w ASP.NET 4.0 jest do tego nowa składnia. zamiast
<%= HttpUtility.HtmlEncode(unencoded) %>
możesz po prostu to zrobić
<%: unencoded %>
czytaj więcej tutaj: 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
Możesz użyć rzeczywistych tagów html <xmp>i </xmp>wyprowadzić ciąg, tak jak ma to miejsce, aby pokazać wszystkie tagi pomiędzy tagami xmp.
Lub możesz również użyć na serwerze Server.UrlEncodelub HttpUtility.HtmlEncode.
Nie widziałem tego tutaj
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
była to jedyna rzecz, która działała (asp 4.0+) w przypadku takiego kodu HTML. 'Zostaje wygenerowana za '(pomocą htmldecode) w HTML, powodując jego uszkodzenie:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
jest kilka specjalnych znaków cudzysłowu, które nie są usuwane przez HtmlEncode i nie będą wyświetlane poprawnie w Edge lub IE, jak „i„. możesz rozszerzyć zastąpienie tych znaków funkcją podobną do poniższej.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}