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.Web
zestawu:
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.HtmlEncode
fromSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Ma to taki sam efekt, jak HttpUtility.HtmlEncode
i powinno być preferowane System.Security.SecurityElement.Escape
.
SecurityElement.Escape
działa na XML i HtmlEncode
operuje na HTML, a kodowanie XML i HTML ma nieco inne wymagania (szczegóły w tej odpowiedzi ). Na przykład SecurityElement.Escape
można go używać '
, a HtmlEncode
nie.
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.UrlEncode
lub 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("“", "\""));
}