Метка asp.net не напишет 2 <B? - PullRequest
2 голосов
/ 30 января 2012

Простая страница aspx

(ValidateRequest = "false")

Я хочу, чтобы на этикетке было написано:

2<B             //no spaces

Я пробовал:

<asp:Label ID="Label1"  Text="2<B" runat="server" />
<asp:Label ID="Label2"  Text="2&lt;B" runat="server" />

Оба вывода 2

enter image description here

Я также пробовал:

<span ID="Label3"   >2&lt;B</span>

Что работает!

Нокак я могу сказать метке сервера runat написать просто 2<B?

Почему он не понимает &gt;?

Редактировать:

Источник:

enter image description here

Ответы [ 6 ]

1 голос
/ 31 января 2012

Просто HTML кодировать &lt; снова (&amp;lt;)

<asp:Label ID="Label2" Text='2&amp;lt;B' runat="server" />
1 голос
/ 30 января 2012

Попробуйте установить его на стороне сервера

Label1.Text = "2&lt;B"
0 голосов
/ 30 января 2012

ставьте пробел между <и B, и оба работают как </p>

 <asp:Label ID="Label1"  Text="2 < B" runat="server" />
<asp:Label ID="Label2"  Text="2 &lt; B" runat="server" />

Обновление : когда вы ставите <B таким образом, он принимает неполный HTML-тег. Так что он не будет отображатьсяЭто.Чтобы сделать это, вы должны использовать пробел между ними или, как предложено, использовать буквальный контроль или использовать

     HttpUtility.HtmlEncode()
0 голосов
/ 30 января 2012

Попробуйте это:

<asp:Label ID="Label1" runat="server">2&lt;B</asp:Label>
0 голосов
/ 30 января 2012

Если вам не нравится вводить 2 & lt;B, то вы можете использовать Literal с Mode = Encode:

<asp:Literal ID="Literal1" runat="server" Text="2<B" Mode="Encode"/>
0 голосов
/ 30 января 2012

Label кодирует , а не .Если вы хотите, чтобы вывод был закодирован, вы должны использовать Literal с Mode, установленным на Encode, или кодировать его самостоятельно, используя HttpUtility.HtmlEncode:

this.Label1.Text = HttpUtility.HtmlEncode("2<B");
...