<%:%> Синтаксис для кодирования HTML в повторителе - PullRequest
4 голосов
/ 03 мая 2011

Начиная с .NET 4 можно использовать синтаксис <%:%> для HTML-кодировки текста.

В репитере я использую следующий синтаксис для отображения данных

<%# DataBinder.Eval(Container.DataItem, "fieldlabel")%>

Единственный известный мне способ кодирования вывода в ретрансляторе - это использование «Server.HtmlDecode». Можно ли использовать новый <%:%> в повторителе только в сочетании с привязкой данных, чтобы я мог удалить уродливый синтаксис HtlmDecode. Или метод расширения - мой единственный способ улучшить читаемость?

Ответы [ 4 ]

5 голосов
/ 15 января 2016

Начиная с ASP.NET 4.5 это возможно с использованием новой <%#: %> нотации

2 голосов
/ 03 мая 2011

Нет, это невозможно. <%# позволяет анализировать данные привязки, но использует базовый блок <%.

Единственное, что вы можете сделать, это воссоздать <%:, завернув ваш код в Html.Encode.

Например:

<%# Html.Encode(DataBinder.Eval(Container.DataItem, "fieldlabel")) %> 

<%: - это ярлык, и я думаю, что не все варианты использования блоков были включены, чтобы включить ярлык. MS, вероятно, не хотел усложнять проблему, создав тонну различных символов, чтобы охватить различные виды использования и поддерживать только наиболее распространенное использование.

1 голос
/ 03 мая 2011

Я думаю, что ответ "нет", основываясь на этом вопросе.

Значение различных символов на странице .aspx asp.net

0 голосов
/ 20 июня 2013

Возможно, но нужно работать больше:

Пожалуйста, используйте ниже синтаксис

<asp:Literal ID="fieldlabel" runat="server" Mode="Encode" Text='<%#Eval("fieldlabel")%>"></asp:Literal>
...