2010-04-13 5 views
7

Можно создать дубликат:
ASP.NET “special” tags<%# %> против <%= %>

В чем разница между <%# ... %>, <%= ... %> и <%$ ... %>?

Я ничего не смог найти. Невозможно найти «<% =» с помощью поисковой системы.

У этих тегов есть имя?

+1

Что касается терминологии, я думаю, что они называются встроенными выражениями. – AaronLS

ответ

8

<%= ... %> обычно эквивалентен Response.Write (...) он не может использоваться в атрибуте управления, который является runat = "server"

<%: ... %> (от .NET v4.0) представляет собой HTML-кодированную версию <%= %> (как упоминает @Eric)

<%# ... %> используется в контексте привязки данных для привязок, Eval или выход (как упоминается @Ray)

<%$ ... %> используется в контексте атрибут управления с runat = "server" (google "expression builder" также имеет отношение к созданию общего назначения 'Code' expression builder.Это оценивается, когда атрибут/параметр требуется для элемента управления.

5

<% #%> попытается привязать данные к источнику данных с помощью функции Bind(). Это делает его двухсторонней функцией (чтение и запись).

<% =%> сделает данные доступными только для чтения.

+2

Также <%= %> печатает все, что находится между блоками, где <% %> просто выполняет эти утверждения – Jimmy

+2

И теперь у нас также есть <%: %> для вывода с кодировкой html. –

1

<% #%> can ТОЛЬКО можно использовать в контексте привязки данных.

<% =%> ожидает строковое значение, которое затем будет включать в выходной поток. Так что либо строковая переменная, либо метод, который возвращает строку. Все остальное вызовет ошибку.

4

<% #%> оценивается во время связывания данных. Для этого необязательно требуется Eval() или Bind(), и предложил Мэтью - я часто использую его для отображения обычного текста в элементе управления ретранслятора.

<% =%> оценивается как страница рендеринга. Это эквивалентно вызову Response.Write().

+0

+1 Я собирался спросить о другом ответе о «когда» оценивается каждый. – AaronLS

0

Я нашел хорошую информацию, которая уточняет терминологию для будущих поисков Google:

http://authors.aspalliance.com/aspxtreme/aspnet/syntax/aspnetpagesyntax.aspx

Код Рендер Blocks:

<% inline code %> 

ярлык для HttpResponse.Write:

<%=inline expression %> 

выражения привязки данных:

<%# databinding expression %> 

В собственности:

<tagprefix:tagname property = "<%# databinding expression %>" runat="server" /> 

Серверные комментарии, таким образом, что они не появляются в исходном коде страницы клиента:

<%-- commented out code or content --%> 
Смежные вопросы