<% $, <% @, <% =, <% # ... в чем дело?

211

Я программировал как в классическом ASP, так и в ASP.NET, и я вижу разные теги внутри разметки для кода на стороне сервера.

Недавно я наткнулся на хороший блог на MSDN, в котором рассказывается о разнице между:

  • <%= (процент вместе со знаком равенства) и
  • <%# (знак процента и хэш / фунт / октоторп)

( <%#оценивается только при привязке данных и <%=оценивается при рендере), но я также вижу:

  • <%$ (знак процента и доллара) и
  • <%@ (знак процента и символ).

Я считаю, что <%@загружает такие вещи, как сборки и, возможно, <%$загружает вещи из конфигурационных файлов? Я не слишком уверен.

Мне было просто интересно, если кто-нибудь мог бы прояснить все это для меня и, возможно, объяснить, почему так важно создавать так много разных тегов, которые, казалось бы, имеют схожую цель?

Аарон
источник
72
Я рад, что вы спросите, потому что это очень трудно гуглить;)
Николас Дориер
8
Невозможно для Google!
jdbosley
<%#часто используется с eval, но это не обязательно: вы можете использовать его для запуска любого серверного кода, при условии, что вы запускаете Page.DataBind()на содержащей странице или его главной странице. Кажется, что это единственный вариант, если вы хотите «внедрить» код на стороне сервера в атрибуты элементов управления на стороне сервера, таких как <asp:TextBox, <asp:LinkButtonили даже a <input runat="server">.
Гилад Барнер
1
@jdbosley Я погуглил, "<%=" "<%:""<%@" "<%#"и он отправил меня сюда.
Rudey
2
@RuudLenders, удачи вам и хорошей работы Google. В 2014 году поиск по этим тегам не дал результатов хорошего качества.
jdbosley

Ответы:

296
Jose Basilio
источник
Я предполагаю, что это потому, что это принятый ответ, но попытка изменить / w ссылку не сработала. вот ссылка, которую я пытался вставить для
Джон Макинтайр,
6
Есть ли название для всех этих? Как они называются группой?
Виппи
9
@Vippy Их называют пчелиными укусами .
Йен Бойд
1
@Lankymart Самое раннее использование, которое я могу найти, - сентябрь 2008 г.
Ян Бойд
1
@Vippy MS называет их встраиваемыми блоками кода «Пчелиные укусы» - это неофициальный термин.
shiggity
5

Вы рассмотрели 2 из них (<% # оценивается только при привязке данных, а <% = оценивается при рендеринге), и ответ " <%@" состоит в том, что это директивы компилятора (т. Е. Такие вещи, как то, что вы положили бы на командная строка компилятора).

Я не знаю о " <%$".

Майкл Берр
источник