Znaczniki „specjalne” ASP.NET

232

Jaka jest oficjalna nazwa takich „specjalnych” znaczników ASP.NET:

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

Nie potrafię wymyślić ich pojęciowej lub znanej nazwy, więc mam problem ze znalezieniem dodatkowych informacji. Jako bonus, czy ktoś może mi szybko podsumować wszystkie możliwe „specjalne tagi” i co każdy z nich robi (lub wskazać mi zasób)?

Andy White
źródło
1
Microsoft nazywa je również blokami kodu osadzonego, jeśli zawierają kod.
Robert Harvey

Odpowiedzi:

350

Oficjalna nazwa to „ ograniczniki skryptów po stronie serwera ” lub „ wbudowane wyrażenia ASP.NET ”. Okno dialogowe ustawień podświetlania składni Visual Studio 2008 nazywa te „skrypt po stronie serwera HTML”. Chłopaki Microsoft nazywają je na swoich blogach „samorodkami kodu”.

  • <%@ %>jest dyrektywą dla stron internetowych ASP.NET . Służy do stron i kontrolek do konfiguracji ustawień kompilatora strony / kontrolki ( <%@ Control Inherits="MyParentControl" %>).
    • <%@ %>jest również dyrektywą w sprawie stosowania . Służy do określania ustawień aplikacji dla global.asax. Odróżnij się od dyrektyw stron, ponieważ używa tylko innego zestawu tagów.
  • <% %>to blok renderowania kodu (dla kodu wbudowanego) . Jedna z 4 form wbudowanych bloków kodu . Służy do włączenia kodu po stronie serwera do Render()metody ( <% x = x + 1; %>) generowanej klasy. Format: pojedynczy / wielowierszowy lub wielokrotnie połączony (np. if/then/elsePrzeplatany html), ale nie można go używać do deklarowania funkcji.
  • <%= %>to blok renderowania kodu (dla wyrażeń wbudowanych) . Używany jako skrót od<%Response.Write(value)%>
  • <%: %>(nieoficjalnie „ blok kodu kodowania HTML ”) jest taki sam jak poprzedni, ale dane wyjściowe są zakodowane w formacie HTML.
  • <%# %>jest wyrażeniem wiążącym dane . Używany do jednokierunkowy (tylko do odczytu) lub dwukierunkowych (update'u) wiązania przez Eval, Xpath, Bindlub ekspresji (np wybranej wartości kontrolnej rozwijanego). Wiąże wyrażenia z właściwościami kontroli powiązanymi z danymi poprzez znacznik atrybutu kontrolki lub jako oddzielny znacznik, który generuje DataBoundLiteralControlinstancję z wartością na jej Textwłaściwości. Wyrażenia są oceniane przez DataBindingmoduł obsługi zdarzeń dla formantu.
  • <%#: %>jest wyrażeniem wiążącym dane zakodowane w formacie HTML (nowość w programie ASP.NET 4.5). Łączy w sobie funkcjonalność <%# %>i <%: %>.
  • <%$ %>jest konstruktorem wyrażeń ASP.NET . Służy do wiązania wyrażenia środowiska wykonawczego dla właściwości kontrolnych za pośrednictwem atrybutów znacznika serwera. Używany z AppSettings, ConnectionStringslub Resources(lub własne niestandardowe rozszerzenie , na przykład w celu użycia kodu za właściwości). Te przypisania są dodawane do OnInit()metody generowanej klasy.
  • <%-- --%>jest komentarzem po stronie serwera . Służy do wykluczania zawartości z kompilacji (i tak będzie generować błędy, jeśli w skrypcie znajduje się odwołanie do skomentowanego komentarza). W przeciwieństwie do komentarzy HTML zawartość nie zostanie dołączona do wyniku.
  • <!-- #Include ... -->jest dyrektywą uwzględniającą po stronie serwera . Służy do wstawiania zawartości pliku do strony, pliku kontrolnego lub pliku globalnego. Przydatne, gdy kontrola użytkownika jest nadmierna, a strona wzorcowa nie może być użyta.

Istnieje również blok deklaracji kodu , ostateczny formularz bloku kodu osadzonego.

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

Służy to do włączenia dodatkowych elementów (metod itp.) Do klasy wygenerowanej ze znaczników ASP.NET. Zostały one kiedykolwiek dostarczone „głównie w celu zachowania wstecznej kompatybilności ze starszą technologią ASP” i nie są zalecane do użycia.

Andy Brown
źródło
1
Uważam, że istnieje <% $ ...%>, które wiążą dane z ustawieniami / ciągami połączeń.
sisve
O tym nie słyszałem. Czy masz źródło?
Sedat Kapanoglu
3
Nazywa się je Wyrażeniami ASP.NET. Zobacz msdn.microsoft.com/en-us/library/d5bd1tad.aspx
elo80ka
7

Brak odpowiedzi na twoje imię, ale strona MSDN „Składnia strony ASP.NET” jest całkiem dobra (a raczej jest to strona najwyższego poziomu; strony pod nią zawierają więcej informacji).

EDYCJA: Wcześniej myślałem, że <%# ... %>nie ma go na liście, ale oczywiście tak jest w Wyrażeniach wiążących dane. Doh

Jon Skeet
źródło
Ten link obecnie nie działa. Musisz wybrać wersję .NET Framework, zanim to zrobi.
Sam
1
@Sam: Ach, dzięki - myślę, że z jakiegoś powodu został wycofany, kiedy pojawiło się .NET 4.5. Zredagowałem link.
Jon Skeet
1
Myślałem, że Jon Skeet nie zajmuje się tworzeniem stron internetowych ...!
CodeArtist
6

Zawsze uważałem tę stronę Szybki start za bardzo przydatną, ilekroć mam wątpliwości co do składni po stronie serwera. Wyszczególnia 8 różnych stylów znaczników i zawiera ilustrujące przykłady każdego z nich, a także wyjaśnia zalety i wady.

Nie wspomina jednak o dyrektywie na poziomie strony, którą IIRC opisano szczegółowo w innym rozdziale Szybki start.

Oczywiście dotyczy to ASP.NET 2.0.

Cerebrus
źródło
To jest odpowiedź tylko do linku. Proszę wstawić odpowiednie informacje.
zzzzBov
1
link jest nieaktualny :-(
Roland
6

Chłopaki Microsoft nazywają je czasami „samorodkami” lub „samorodkami kodu”.

Matth
źródło
0

Słyszałem też o tych „V stingach”, w tym na podcastie StackOverflow.

Chris Moschini
źródło