2010-04-13 41 views
7

Powiel możliwe:
ASP.NET “special” tags<%# %> vs <%= %>

Jaka jest różnica między <%# ... %>, <%= ... %> i <%$ ... %>?

Nie mogłem znaleźć żadnych informacji na ten temat. Nie można znaleźć "<% =" za pomocą wyszukiwarki.

Czy te tagi mają nazwę?

+1

Co do terminologii, myślę, że są nazywane wyrażeniami w wierszu – AaronLS

Odpowiedz

8

<%= ... %> jest generalnie odpowiednikiem Response.Write (...) nie można go używać w atrybucie sterowania, który jest runat = "serwer"

<%: ... %> (od .NET v4.0) jest HTML zakodowaną wersję <%= %> (jak wspomniano @Eric)

<%# ... %> stosowany jest w kontekście danych wiązania dla zaciągania Eval lub wyjściowego (jak wspomina @Ray)

<%$ ... %> jest używany w kontekście atrybut kontrolny z runat = "serwer" (google "ekspresja wyrażeń" również wygląda na generowanie ogólnego celu 'Code' expression builder. jest oceniany, gdy atrybut/parametr jest wymagany przez formant.)

5

<% #%> spróbuje połączyć ze źródłem danych za pomocą funkcji Bind(). Dzięki temu jest to funkcja dwukierunkowa (odczyt i zapis).

% =%> spowoduje, że dane będą tylko do odczytu.

+2

Również <%= %> drukuje wszystko, co znajduje się pomiędzy blokami, gdzie jako <% %> po prostu wykonuje te instrukcje. – Jimmy

+2

A teraz mamy również <%: %> dla wyjścia zakodowanego w html. –

1

<% #%> można TYLKO używać w kontekście wiązania danych.

<% =%> oczekuje wartości łańcucha, która następnie zostanie uwzględniona w strumieniu wyjściowym. Tak więc albo zmienna łańcuchowa, albo metoda, która zwraca ciąg znaków. Cokolwiek innego spowoduje błąd.

4

<% #%> jest oceniany podczas wiązania danych. To niekoniecznie wymaga Eval() lub Bind() i Matthew zasugerował - często go używam do wyświetlania zwykłego tekstu w kontrolerze wzmacniaka.

<% =%> jest oceniane jako renderowanie strony. Jest to odpowiednik wywołania Response.Write().

+0

+1 Już miałem zapytać o inną odpowiedź na temat "kiedy" każdy jest oceniany. – AaronLS

0

znalazłem jakieś dobre informacje, które wyjaśnia terminologię dla przyszłych wyszukiwań Google:

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

Kod Render bloków:

<% inline code %> 

skrót dla HttpResponse.Write:

<%=inline expression %> 

Wiązanie danych wyrażeń:

<%# databinding expression %> 

w nieruchomości:

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

po stronie serwera comments, takie, które nie pojawiają się w źródle strony klienta:

<%-- commented out code or content --%>