.NET "блоки самородков кода"?

Так что в.NET у нас есть...

<%=

<%: (new to .NET 4 - syntactic sugar for HTML encoding)

<%#

<%@

Что именно это?

И есть ли еще? Есть ли исчерпывающий список этих и что они есть? Трудно понять, что вообще искать - я даже не слышал о термине "блоки слепков кода" до сегодняшнего вечера, когда обнаружил, что <%: было.

3 ответа

Они называются кодовыми самородками. Они предоставляют инструкции платформы ASP.NET о том, как обрабатывать оператор в этих символах (<%%>). Пока я не знал его имени, да, было немного сложнее спросить об этом в сообществе. Не уверен в "исчерпывающем" списке, но есть пара больше, чем вы указали. Ниже приведен список других слепков кода, их использование и пример примера.

Символ - Имя - Описание - например (Формат)


<% - Стандартный слепок кода - Указывает, что следующие операторы являются операторами C#. Придется следовать правилам синтаксиса C#. например.

<% string[] cities = { ""London"", ""New York"", ""Paris"" };
string myCity = cities[new Random().Next(cities.Length)];
Response.Write(myCity);%>

<%= - Слепок кода содержания - аналогично стандартному cn, разница в том, что возвращаемый результат напрямую вставляется в ответ браузеру без использования Response.Write, например.

<%=textBox.Text%> 

(НЕ РЕКОМЕНДУЕТСЯ, включает в себя риск атаки html-инъекцией. Если ввод в текстовое поле что-то вроде "< button type = submit > Submit</button >", это добавит кнопку на страницу. Конечно, будет проверка, но надеюсь, что суть ясна.)


<%: - слепок кодированного кода - аналогично <% =, но ответ закодирован в формате HTML. например. Name is <%:textBox.Text%> (независимо от того, что ввод в текстовом поле, он отображается. Если ввод что-то вроде "< button type = submit > Submit</button >", вывод будет" Имя <button type = submit> Submit</button>".


<%# - слепок кода привязки данных - обозначает слепок кода привязки данных, используемый для ссылки на текущий объект данных. Используется только с элементами управления связью данных, такими как ретранслятор и т. Д.

<%#:- Закодированная привязка данных - Обозначает слепок кода привязки закодированных данных, в который закодировано значение привязки к данным. например.

<asp:Repeater ItemType = ""System.String"" SelectMethod = ""GetCities"" runat = ""server">
<ItemTemplate>
<li > <%# Item % > </li>
</ItemTemplate>
</asp:Repeater> 

(Если закодировано (<%#:), он отображает литералы без интерпретаций, рекомендуется.) "


<%$ - слепок кода свойства - используется для ссылки на значение конфигурации, например, определенное в Web.config.

<asp:Literal Text = " < %$ AppSettings: cityMessage % > " runat = "server" /> 

(Получает значение ключа cityMessage из файла конфигурации.)


<%@ Директива --Page - используется для настройки веб-формы (или элемента управления или главной страницы, в зависимости от типа директивы. Например.

<%@ Page.. <%@ Master

Вся вышеперечисленная информация и примеры взяты из книги Адама Фримена Pro ASP .NET 4.5, глава 12. Отличная книга.

Эти <%@ являются директивами. Полный список и документация см. В MSDN.

При использовании директивы могут быть расположены в любом месте файла.aspx или.ascx, хотя стандартная практика - включать их в начало файла. Каждая директива может содержать один или несколько атрибутов (в сочетании со значениями), которые являются специфическими для этой директивы.

<% являются скриптовыми блоками. Вот хорошее описание в MSDN

Встроенный блок кода - это код сервера, который выполняется на этапе визуализации страницы. Код в блоке может выполнять программные операторы и вызывать функции в текущем классе страницы.

<%# блок обычно используется в связанных элементах управления. Смотрите эту короткую статью для получения дополнительной информации.

Я не уверен, что все эти теги WebForm имеют правильное общее имя, но все они должны быть включены в синтаксис страницы ASP.NET.

Есть еще один, которого нет в списке, ASP.NET Expressions:

<%$ expressionPrefix: expressionValue %>

Трудно быть ясным и окончательным в отношении имен, потому что Microsoft часто не является ясным и окончательным. Например я не знаю, как называется <%: ... %> является.

Также трудно быть уверенным в том, что является текущей документацией, и Microsoft работает над решением этой проблемы.

В следующей таблице приведены перекрестные ссылки на то, что содержится во встроенных выражениях ASP.NET в.NET Framework, и на то, что содержится в синтаксисе страниц ASP.NET.

    Синтаксис | Поддержка статьи | Документы
    <%...%> | Встроенный блок кода | встроенный код (см. Code Render Blocks)
    <% =...%> | Блок встроенных выражений | встроенное выражение (см. Блоки визуализации кода)
    <% @...%> | Директива по текстовым шаблонам | Директива по текстовым шаблонам
    <% #...%> | Выражение для привязки данных | Выражение для привязки данных
    <% $...%> | Построитель выражений |???
    <% -...%> | Комментарии на стороне сервера | Комментарии на стороне сервера
    <%:...%> | N / A | N / A

<%...%>: блок встроенного кода

Встроенный блок кода обеспечивает обратную совместимость с классическим ASP, а также используется PHP и JSP. Поскольку они встроены в HTML, они обычно затрудняют чтение и поддержку HTML.

<% =...%>: блок встроенных выражений

Блок встроенного выражения выполняется так, как если бы он был параметром оператора Response.Write(…).

<%:...%>:???

То же, что <% = Server.HtmlEncode (...)%>, где... - это параметр Server.HtmlEncode.

<% @...%>: директива текстового шаблона

В текстовой директиве шаблонов указываются параметры, используемые страницей и компиляторами пользовательских элементов управления при обработке страниц веб-формы ASP.NET (.aspx) и файлов пользовательского элемента управления (.ascx).

<% #...%>: выражение привязки данных

Выражение привязки данных связывает свойство элемента управления сервером с источником данных.

<% $...%>: построитель выражений

Построитель выражений устанавливает значение свойства элемента управления в значение в конфигурации приложения или в файле ресурсов. Выражение построителя выражений состоит из:

Expression Prefix: Expression Value

Префикс выражения - это тип выражения, например, узел в файле Web.config, а значение выражения - имя ключа в узле. Результатом является значение, указанное для ключа.

<% -...%>: блок комментариев на стороне сервера

Блок комментариев на стороне сервера позволяет размещать комментарии в любом месте HTML, кроме блоков кода.

Разный синтаксис

Следующее также находится на странице документации Microsoft Docs, на случай, если это поможет.

    Синтаксис | Документы
     | Пользовательский серверный контроль
     | Серверный объектный тег
     | Директива включения на стороне сервера
                                        
                                    
                                
                                

Представляя Visual C# 2010, автор Адам Фриман пишет:

Официальным термином для тегов <% и%> являются разделители сценариев на стороне сервера, хотя они чаще называются слепками кода.

Другие вопросы по тегам