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

Итак, в .NET у нас есть...

<%=

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

<%#

<%@

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

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


person geoid    schedule 20.11.2011    source источник


Ответы (5)


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

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


<% --Стандартный слепок кода -- Указывает, что следующие операторы являются операторами 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.. <%@ Master

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

person anish    schedule 08.04.2014

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

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

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

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

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

person Ray K    schedule 20.11.2011

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

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

<%$ expressionPrefix: expressionValue %>
person Chris Fulstow    schedule 20.11.2011

Трудно быть ясным и окончательным в отношении имен, потому что 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 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
person user34660    schedule 13.03.2019

В статье «Введение в Visual C# 2010» автор Адам Фриман пишет:

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

person Kevin Scharnhorst    schedule 24.05.2019