Как мне избежать текста для использования HTML в C #? я хочу делать
sample="<span>blah<span>"
и имеют
<span>blah<span>
отображаться как обычный текст вместо бла только с тегами часть HTML :(. Использование C # не ASP
Как мне избежать текста для использования HTML в C #? я хочу делать
sample="<span>blah<span>"
и имеют
<span>blah<span>
отображаться как обычный текст вместо бла только с тегами часть HTML :(. Использование C # не ASP
Ответы:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Кроме того, вы можете использовать это, если вы не хотите использовать System.Webсборку:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Согласно этой статье , разница между System.Security.SecurityElement.Escape()и System.Web.HttpUtility.HtmlEncode()заключается в том, что первый также кодирует (')символы апострофа .
SecurityElement.Escape()ускользает от XML, который не совсем HTML.
Если вы используете .NET 4 или выше и не хотите ссылаться System.Web, вы можете использовать WebUtility.HtmlEncodeизSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Это имеет тот же эффект, что HttpUtility.HtmlEncodeи должно быть предпочтительным System.Security.SecurityElement.Escape.
SecurityElement.Escapeработает на XML и HtmlEncodeработает на HTML, а XML и HTML-кодирование предъявляют немного разные требования (подробности см. В этом ответе ). Так, например, SecurityElement.Escapeразрешено использовать ', пока HtmlEncodeнет.
никто еще не упомянул, в ASP.NET 4.0 есть новый синтаксис для этого. вместо того
<%= HttpUtility.HtmlEncode(unencoded) %>
ты можешь просто сделать
<%: unencoded %>
читайте больше здесь: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- жерех-нетто-MVC-2.aspx
Вы можете использовать фактические HTML-теги <xmp>и </xmp>вывести строку как есть, чтобы показать все теги между тегами xmp.
Или вы также можете использовать на сервере Server.UrlEncodeили HttpUtility.HtmlEncode.
Не видел это здесь
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
это было единственное, что работало (asp 4.0+) при работе с html подобным образом. 'Получает отображается как '( с использованием htmldecode) в HTML, вызывая его на провал:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
есть некоторые специальные символы кавычек, которые не удаляются HtmlEncode и не будут правильно отображаться в Edge или IE, например »и«. Вы можете заменить эти символы на что-то вроде функции ниже.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}