Подтвердить что ты не робот

.NET "блокирует самородки кода"?

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

<%=

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

<%#

<%@

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

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

4b9b3361

Ответ 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, автор Адам Фриман пишет:

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