ASP.NET «специальные» теги


232

Какое официальное название для «специальных» тегов ASP.NET, например:

<%# %>
<%= %>
<%@ %>
<%$ %>

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


1
Microsoft также называет их встроенными кодовыми блоками, если они содержат код.
Роберт Харви

Ответы:


350

Официальное название - « разделители сценариев на стороне сервера » или « встроенные выражения ASP.NET ». В диалоговом окне настроек подсветки синтаксиса Visual Studio 2008 они называются «HTML-сценарий на стороне сервера». Ребята из Microsoft называют их «самородками кода» в своих блогах.

  • <%@ %>является Директива для ASP.NET веб - страниц . Используется для страниц и элементов управления для настройки параметров компилятора страницы / элемента управления ( <%@ Control Inherits="MyParentControl" %>).
    • <%@ %>также Директива по применению . Используется для указания настроек приложения для global.asax. Отличие от директив страницы, поскольку он использует только другой набор тегов.
  • <% %>является блоком рендеринга кода (для встроенного кода) . Одна из 4 форм встроенных блоков кода . Используется для включения серверного кода в Render()метод ( <% x = x + 1; %>) сгенерированного класса. Формат: однострочный / многострочный или многосвязный (например, if/then/elseс добавлением html), но не может использоваться для объявления функций.
  • <%= %>это код Рендер блока (для встроенных выражений) . Используется как сокращение для<%Response.Write(value)%>
  • <%: %>(неофициально « Блок кодировки HTML-кода ») такой же, как и предыдущий, но вывод кодируется в формате HTML.
  • <%# %>является связывание данных выражений . Используется для одностороннего (только для чтения) или двухсторонним (обновляемый) связывания через Eval, Xpath, Bindили выражения (например , выбранного значения выпадающего контроля). Связывает выражения со свойствами элемента управления с привязкой к данным через разметку атрибута элемента управления или в виде отдельного тега, который генерирует DataBoundLiteralControlэкземпляр со значением в его Textсвойстве. Выражения оцениваются DataBindingобработчиком событий для элемента управления.
  • <%#: %>является HTML-кодированным выражением привязки данных (впервые в ASP.NET 4.5). Он сочетает в себе функциональность <%# %>и <%: %>.
  • <%$ %>является Expression Builder ASP.NET . Используется для привязки выражений во время выполнения для свойств элемента управления через атрибуты тега сервера. Используется с AppSettings, ConnectionStringsили или Resources(или вашим собственным пользовательским расширением , например, для использования свойств выделенного кода). Эти назначения добавляются в OnInit()метод сгенерированного класса.
  • <%-- --%>является комментарием на стороне сервера . Используется для исключения содержимого из компиляции (и, следовательно, будет генерировать ошибки, если закомментированный элемент управления упоминается в коде позади). В отличие от комментариев html, содержимое не будет включено в вывод.
  • <!-- #Include ... -->является на стороне сервера Включить директиву . Используется для вставки содержимого файла в страницу, элемент управления или глобальный файл. Полезно, когда пользовательский элемент управления излишний, а главную страницу нельзя использовать.

Существует также блок декларации кода , окончательная форма блока встроенного кода.

<script runat="server">
bool IsTrue() {
  return false;
}
</script>

Это используется для включения дополнительных членов (методов и т. Д.) В класс, сгенерированный из разметки ASP.NET. Они только когда-либо были предоставлены «в первую очередь для сохранения обратной совместимости со старыми технологиями ASP» и не рекомендуются для использования.


1
Я считаю, что есть <% $ ...%>, который привязывает данные к строкам приложений / строкам соединения.
sisve

Я не слышал об этом. У тебя есть источник?
Седат Капаноглу

3
Они называются выражениями ASP.NET. См. Msdn.microsoft.com/en-us/library/d5bd1tad.aspx
elo80ka

7

Нет ответа на ваш вопрос об имени, но страница MSDN «Синтаксис страницы ASP.NET» довольно хороша (или, скорее, это страница верхнего уровня; страницы под ней дают больше информации).

РЕДАКТИРОВАТЬ: Ранее я думал, что <%# ... %>это не было включено в список, но, конечно, это в выражениях привязки данных. Doh.


Эта ссылка в настоящее время не работает. Вы должны выбрать версию платформы .NET, прежде чем это сделать.
Сэм

1
@ Сэм: Ах, спасибо - я думаю, что он вышел на пенсию, когда вышел .NET 4.5, по некоторым причинам. Я редактировал ссылку.
Джон Скит

1
Я думал, что Джон Скит не занимается веб-разработкой ...!
CodeArtist

6

Я всегда находил эту страницу быстрого запуска очень полезной, когда у меня возникают сомнения по поводу синтаксиса на стороне сервера. Он детализирует 8 различных стилей разметки и предоставляет иллюстративные примеры каждого из них, в дополнение к объяснению плюсов и минусов.

Тем не менее, он не упоминает директиву уровня страницы, которая описана в других разделах Быстрого старта.

Конечно, это относится к ASP.NET 2.0.


Это ответ только для ссылки. Пожалуйста, укажите соответствующую информацию.
zzzzBov

1
ссылка устарела :-(
Роланд


6

Ребята из Microsoft иногда называют их «самородками» или «самородками кода».


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.