2009-02-25 2 views
0

Следующая метка asp не отображается в браузере, может кто-то пожалуйста скажите мне, что я делаю неправильно. Я ожидаю увидеть значение <abc>, но вместо этого Я ничего не получаю.Метка Текст Имущество и сущности

<asp:Label ID="Label1" runat="server" Text="&lt;abc&gt;"></asp:Label> 

Кстати, я понимаю, что я могу сделать то же самое, выполнив следующие действия:

<asp:label id="Message1" runat="server"> &lt;abc&gt; </asp:Label> 

Но это не совсем то, что я прошу, что я хотел бы знать, если использование строки, такой как "&lt;abc&gt;" в значении атрибута для asp-элементов разрешено или нет. Другими словами, это ошибка ASP.Net или это поведение по дизайну, и если по дизайну, в чем причина такого дизайна?

спасибо.

ответ

4

Верьте или нет, но вы можете включать объекты, не избежать их, таким образом:

<asp:Label runat="server" ID="myLabel" Text="<abc>" /> 

Это воздаст <AbC> тега.

Edit: ОК, извините, вы хотите отобразить скобки, не сделать метку, конечно .. Использование ссылок на объекты в атрибуте Text даст тот же результат - в (невидимый) <AbC> тег - потому что они переводятся, когда тег анализируется на стороне сервера. То, что вы должны сделать, это:

<asp:Label runat="server" ID="myLabel" Text="&amp;lt;abc&amp;gt;" /> 

Это даст желаемый результат - & усилителя; ссылка на объект будет выдавать амперсанд клиенту. Затем следуют lt;, результатом является правильная ссылка на объект на стороне клиента (& lt;). Который будет отображаться как <.

Чтобы ответить на ваши вопросы прямо: Да, использование ссылок сущностей в атрибутах ASP.NET (очевидно) ОК, так как это формат XML. На самом деле это не «решение» со стороны Microsoft (и, конечно, не ошибка) - это просто XML.

Трюк реализуется при анализе ссылок на сущность (при анализе тега на сервере) и в результате чего получается текст, который будет отправлен клиенту.

0

Да, конечно, это разрешено. Целью управления ярлыками является отображение текста и разметки для клиента. И это действительно полезно, я думаю. введенный код - ваша ответственность.

+0

Это похоже на цель управления asp: Literal, которое позволяет осуществлять явный контроль над экранированием. – brianary

0

Парсер asp.net aspx будет отменять «& lt;» и "&"; на «<» и «>». Он будет генерировать что-то вроде этого метода:

[DebuggerNonUserCode] 
private Label __BuildControlLabel1() 
{ 
    Label __ctrl = new Label(); 
    base.Label1 = __ctrl; 
    __ctrl.ApplyStyleSheetSkin(this); 
    __ctrl.ID = "Label1"; 
    __ctrl.Text = "<abc>"; 
    return __ctrl; 
} 

Если вы хотите, чтобы записать его в текст собственности вы можете удвоить бежать, как «& усилителя; л;», но это, вероятно, проще просто написать его между началом и как вы упоминаете.

<asp:Label ...>&lt;abc&gt;</asp:Label>. 
Смежные вопросы