Escape текст для HTML - PullRequest
128 голосов
/ 17 июня 2009

Как мне избежать текста для использования html в C #? Я хочу сделать

sample="<span>blah<span>"

и имеют

<span>blah<span>

отображается в виде обычного текста вместо бла, только с тегами, частью HTML :( Использование C # не ASP

Ответы [ 8 ]

175 голосов
/ 17 июня 2009
using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);
79 голосов
/ 20 декабря 2009

Кроме того, вы можете использовать это, если вы не хотите использовать System.Web сборку:

var encoded = System.Security.SecurityElement.Escape(unencoded)

В этой статье , разница между System.Security.SecurityElement.Escape() и System.Web.HttpUtility.HtmlEncode() заключается в том, что первая также кодирует символы (') апостроф.

43 голосов
/ 16 сентября 2013

Если вы используете .NET 4 или выше и не хотите ссылаться на System.Web, вы можете использовать WebUtility.HtmlEncode из System

var encoded = WebUtility.HtmlEncode(unencoded);

Это имеет тот же эффект, что и HttpUtility.HtmlEncode, и должно быть предпочтительнее, чем System.Security.SecurityElement.Escape.

19 голосов
/ 19 октября 2011

никто еще не упомянул, в 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-asp-net-mvc-2.aspx

5 голосов
/ 04 февраля 2016

.NET 4.0 и выше:

using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
5 голосов
/ 17 июня 2009

Вы можете использовать фактические HTML-теги <xmp> и </xmp>, чтобы вывести строку как есть, чтобы показать все теги между тегами xmp.

Или вы также можете использовать на сервере Server.UrlEncode или HttpUtility.HtmlEncode.

1 голос
/ 24 июня 2014

не видел здесь

System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")

это было единственное, что работало (asp 4.0+) при работе с html, подобным этому. &apos; отображается как ' (с использованием htmldecode) в html, что приводит к сбою:

<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It&apos;s Allstars'); return false;">It's Allstars</a>
0 голосов
/ 27 апреля 2016

есть некоторые специальные символы кавычек, которые не удаляются HtmlEncode и не будут правильно отображаться в Edge или IE, например »и«. Вы можете заменить эти символы на что-то вроде функции ниже.

private string RemoveJunkChars(string input)
{
    return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...