.NET "блокирует самородки кода"?
Итак, в .NET у нас есть...
<%=
<%: (new to .NET 4 - syntactic sugar for HTML encoding)
<%#
<%@
Что именно это?
И есть ли еще? Есть ли исчерпывающий список этих и то, что они где-нибудь? Трудно понять, что даже искать - я даже не слышал о терминах "блокировки самодельного кода" сегодня вечером, когда я обнаружил, что <%: was.
Ответы
Ответ 1
Их часто называют фрагментами кода, но этот термин отсутствует в документации Microsoft. Microsoft называет их встроенными выражениями, как в разделе Введение в встроенные выражения ASP.NET в .NET Framework. Они предоставляют инструкции платформы ASP.NET о том, как обрабатывать оператор в этих символах (<%%>). Пока я не знал его имени, да, было немного сложнее спросить об этом в сообществе. Не уверен в "исчерпывающем" списке, но есть пара больше, чем вы указали. Ниже приведен список других слепков кода, их использование и пример примера.
Символ - Имя - Описание - например (Формат)
<%
--Standard code nugget - указывает, что следующие операторы являются операторами С#. Придется следовать правилам синтаксиса С#. например.
<% string[] cities = { ""London"", ""New York"", ""Paris"" };
string myCity = cities[new Random().Next(cities.Length)];
Response.Write(myCity);%>
<%=
--Content кодовый слепок --Similar для стандартного cn, разница в том, что возвращаемый результат напрямую вставляется в ответ браузеру без необходимости использовать Response.Write
. например.
<%=textBox.Text%>
(НЕ РЕКОМЕНДУЕТСЯ, включает в себя риск атаки html-инъекцией. Если в текстовом поле введено что-то вроде " < button type = submit > Submit</button >
", это добавит кнопку на страницу. Конечно, будет проверка, но надеюсь суть понятна.)
<%:
--Encoded кодовый слепок --Similar - <% =, но ответ закодирован в HTML. например. Name is <%:textBox.Text%>
(независимо от того, какой ввод находится в текстовом поле, он отображается. Если ввод похож на " < button type = submit > Submit</button >
", выводом будет "Name is <button type = submit> Submit</button>
".
<%#
слепок кода привязки данных --Denotes слепок кода привязки данных, используемый для ссылки на текущий объект данных. Используется только с элементами управления связью данных, такими как репитер и т.д.
<%#:
--Encoded привязка данных --Denotes кодированный слепок кода привязки данных, где закодировано значение данных. например.
<asp:Repeater ItemType = ""System.String"" SelectMethod = ""GetCities"" runat = ""server">
<ItemTemplate>
<li > <%# Item % > </li>
</ItemTemplate>
</asp:Repeater>
(Если используется закодированный (<%#:
:), он отображает литералы без интерпретаций, рекомендуется.) "
<%$
--Property кодовый слепок - используется для ссылки на значение конфигурации, например, определенное в Web.config.
<asp:Literal Text = " < %$ AppSettings: cityMessage % > " runat = "server" />
(Получает значение ключа cityMessage из файла конфигурации.)
Директива <%@
--Page - используется для настройки веб-формы (или элемента управления или главной страницы, в зависимости от вида директивы. Например.
<%@ Page.. <%@ Master
Вся вышеупомянутая информация и примеры взяты из книги Adam Freeman Pro ASP.NET 4.5, глава 12. Отличная книга imo.
Ответ 2
Эти <%@
являются директивами. Полный список и документацию см. В MSDN.
При использовании директивы могут быть расположены где угодно в .aspx или .ascx файл, хотя стандартная практика заключается в том, чтобы включать их в начале файл. Каждая директива может содержать один или несколько атрибутов (в паре со значениями), которые являются специфическими для этой директивы.
<%
являются блоками script. Вот хорошее описание в MSDN
Встроенный блок кода - это код сервера, который выполняется во время визуализировать фазу. Код в блоке может выполнять программирование операторов и функций вызова в текущем классе страниц.
Блок <%#
обычно используется в связанных элементах управления. Для получения дополнительной информации см. Эту короткую статью.
Ответ 3
Я не уверен, что все теги WebForm имеют надлежащее коллективное имя, но все они должны быть рассмотрены в Синтаксис страницы ASP.NET.
Там другой, который не в списке, ASP.NET Expressions:
<%$ expressionPrefix: expressionValue %>
Ответ 4
Трудно быть ясным и окончательным в отношении имен, потому что 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
Ответ 5
Представляя Visual С# 2010, автор Адам Фриман пишет:
Официальным термином для тегов <% и%> являются разделители сценариев на стороне сервера, хотя они чаще называются слепками кода.