Як я можу отримати текст для використання html у C #? Я хочу зробити
sample="<span>blah<span>"
і мати
<span>blah<span>
відображатись як звичайний текст замість благ лише з тегами, що є частиною html :(. Використання C # not ASP
Як я можу отримати текст для використання html у C #? Я хочу зробити
sample="<span>blah<span>"
і мати
<span>blah<span>
відображатись як звичайний текст замість благ лише з тегами, що є частиною html :(. Використання C # not 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- asp-net-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("“", "\""));
}