.NET "блоки самородков кода"? - PullRequest
17 голосов
/ 21 ноября 2011

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

<%=

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

<%#

<%@

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

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

Ответы [ 5 ]

10 голосов
/ 08 апреля 2014

Их часто называют кодовыми самородками , но этот термин не существует в документации Microsoft. Microsoft называет их встроенными выражениями , как в Введение в встроенные выражения ASP.NET в .NET Framework . Они предоставляют инструкции платформы 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. например. <code>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.. <%@ Master

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

9 голосов
/ 21 ноября 2011

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

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

<% - это блоки скриптов.Вот хорошее описание в MSDN

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

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

2 голосов
/ 21 ноября 2011

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

Есть еще один, который не указанlist, ASP.NET Expressions :

<%$ expressionPrefix: expressionValue %>
0 голосов
/ 24 мая 2019

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

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

0 голосов
/ 13 марта 2019

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

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

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

    Syntax      | Support Article           | Docs
    <% ... %>     | Embedded Code Block       | inline code (see Code Render Blocks)
    <%= ... %>    | Inline Expression Block   | inline expression (see Code Render Blocks)
    <%@ ... %>    | Text Template Directive   | Text Template Directive
    <%# ... %>    | Data-Binding Expression   | Data-Binding Expression
    <%$ ... %>    | Expression Builder        | ???
    <%-- ... %>   | Server-Side Comments      | Server-Side Comments
    <%: ... %>    | N/A                       | N/A

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

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

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

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

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

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

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

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

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

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

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

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

Expression Prefix: Expression Value

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

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

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

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

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

    Syntax                                      | Docs
    <tagprefix:tagname runat="server"/>       | Custom Server Control
    <object id="id" runat="server"/>          | Server-Side Object Tag
    <!-- #include file|virtual="filename" --> | Server-Side Include Directive
...