2011-11-20 14 views
15

Więc w .NET mamy ....NET "bloki bryłowe kodu"?

<%= 

<%: (new to .NET 4 - syntactic sugar for HTML encoding) 

<%# 

<%@ 

Czym dokładnie jest?

A czy jest ich więcej? Czy istnieje wyczerpująca lista tych i jakie są one gdziekolwiek? Trudno wiedzieć, czego nawet szukać - nie słyszałem nawet słowa "bloki bryłek kodu", dopóki nie odkryłem, co to jest <%.

Odpowiedz

9

Te <%@ są dyrektywami. Pełna lista i dokumentacja znajdują się pod adresem MSDN.

Użyty dyrektyw może być umieszczony w dowolnym miejscu w .aspx lub .ascx plik, choć powszechną praktyką jest, aby włączyć je na początku pliku. Każda dyrektywa może zawierać jeden lub więcej atrybutów (sparowane z wartościami), które są specyficzne dla tej dyrektywy.

<% są blokami skryptu. Oto dobry opis w MSDN

Wbudowany blok kodu jest kod serwera, który wykonuje podczas fazy strony za render. Kod w bloku może wykonywać instrukcje i wywoływać funkcje programowania w bieżącej klasie stron.

Blok <%# jest zwykle używany w kontrolkach związanych. Zobacz ten krótki numer article, aby uzyskać więcej informacji.

2

Nie jestem pewien, czy wszystkie te tagi WebForm mają poprawną wspólną nazwę, ale wszystkie powinny być pokryte w ASP.NET Page Syntax.

Jest jeszcze inny, że nie jest na liście, ASP.NET Expressions:

<%$ expressionPrefix: expressionValue %> 
8

Nazywane są bryłki kod. Dostarczają one instrukcje do frameworku ASP.NET na temat przetwarzania instrukcji w tych symbolach (<%%>). Dopóki nie znałem jego nazwy, tak było o wiele trudniej zapytać o to w społeczności. Nie jestem pewien "wyczerpującej" listy, ale jest ich o kilka więcej, niż podałeś. Poniżej znajduje się lista innych elementów użytkowych kodu i ich zastosowań oraz przykładowy przykład.

Symbol - Nazwa - opis - np (Format)


<% --Standard kod samorodek - Wskazuje, że następujące stwierdzenia są C# oświadczenia. Będzie musiał przestrzegać reguł składni C#. na przykład.

<% string[] cities = { ""London"", ""New York"", ""Paris"" }; 
string myCity = cities[new Random().Next(cities.Length)]; 
Response.Write(myCity);%> 

<%= kod --Content bryłki - podobne do standardowych CN różnicą jest wynik zwracany jest wprowadzony bezpośrednio w odpowiedzi na przeglądarce bez konieczności stosowania Response.Write. na przykład.

<%=textBox.Text%> 

(NIEZALECANE, zawiera ryzyko ataku html injection.Jeśli dane wejściowe w polu tekstowym są podobne do "< button type = submit > Submit</button >", zostanie dodany przycisk do strony. Oczywiście nie byłoby walidacji, ale nadzieję, że punkt jest jasny.)


<%: --Encoded kod samorodek --Similar do <% =, ale odpowiedź jest kodowany HTML. na przykład. Name is <%:textBox.Text%> (cokolwiek wejście jest na polu, jest on wyświetlany. Jeśli wejście jest coś takiego jak „< button type = submit > Submit</button >”, wyjście będzie „Nazwa jest <button type = submit> Submit</button>”.


<%# kod --data wiążącego nugget - Uwzględnia model użytkowy wiążący dane, używany do odwoływania się do bieżącego obiektu danych. Można go używać tylko z kontrolkami danych, takimi jak repeater itp.

<%#: - Powiązanie kodowane danych - oznacza zakodowany samorodek kodu wiążącego dane, w którym wartość związana z danymi jest zakodowana, np.

<asp:Repeater ItemType = ""System.String"" SelectMethod = ""GetCities"" runat = ""server"> 
<ItemTemplate> 
<li > <%# Item % > </li> 
</ItemTemplate> 
</asp:Repeater> 

(Jeśli zakodowany (<%#:) jest używany, to wyświetla literały bez interpretacji, zalecane.)”


<%$ --Property kodu samorodek - odnosi się do wartości konfiguracyjnych, takich jak te zdefiniowane w Web.config.

<asp:Literal Text = " < %$ AppSettings: cityMessage % > " runat = "server" /> 

(Pobiera wartość klucza cityMessage z pliku konfiguracyjnego.)


<%@ --page dyrektywa - Służy do konfiguracji Web Form (lub CONTROL lub stronę wzorcową, w zależności od rodzaju dyrektywy. np.

<%@ Page.. <%@ Master 

Wszystkie wyżej wymienione informacje oraz e xamples pochodzą z książki Adama Freemana Pro ASP .NET 4.5, rozdział 12. Excellent book imo.