2008-10-01 7 views
10

Wybacz moją ignorancję ASP, ale jaka jest różnica?Jaka jest różnica między <%# %> i <%= %>?

+0

możliwe duplikat [Co jest różnica pomiędzy <% # a <% = otwierania znaczniki?] (Http://stackoverflow.com/questions/100853/what-is-the-difference-between- znaczniki otwierające i otwierające) –

+0

http://stackoverflow.com/questions/100853/what-is-the-difference-between-the-and-opening-tags –

Odpowiedz

17

Są one nieco nieoficjalnie określane jako "użądlenia pszczół". Istnieją 4 typy:

<%# %> jest wywoływany podczas fazy DataBinding.

<%= %> służy do pobierania wartości z kodu do warstwy interfejsu użytkownika. Przeznaczone do kompatybilności wstecznej z aplikacjami ASP. Nie należy używać w .NET.

<%@ %> reprezentuje directives i pozwala na zachowanie zachowań bez uciekania się do kodu.

<%: %> (wprowadzone w ASP.NET 4) jest taki sam jak %=, ale z dodaną funkcjonalnością HtmlEncoding wyjścia. Intencją jest to, aby było to domyślne użycie (ponad %=), aby pomóc w ochronie przed atakami polegającymi na wstrzykiwaniu skryptów.

Dyrektywy określić ustawienia, które są używane przez strony i łatwość sterowania kompilatory gdy kompilatory przetwarzać ASP.NET Web Forms stron (pliki aspx) i kontroli użytkownika (.ascx) plików.

ASP.NET traktuje dowolny blok dyrektywa (<% @%>), który nie zawiera wyraźnego nazwę Dyrektywa w dyrektywie @ Page (na stronie), albo jako @ dyrektywę sterowania (dla użytkownika Kontrola ).

@Esteban - Dodano link msdn do dyrektyw. Jeśli potrzebujesz ... więcej wyjaśnień, proszę dać mi znać.

+0

Swait, czy mógłbyś wyjaśnić na <%@ %>. Nie jestem pewien, czy rozumiem, co masz na myśli. Dzięki! –

+0

Zobacz wszystkie strony .NET z AJAX lub Master Pages. Znajdziesz tam dyrektywę <%@ $> wskazującą, które strony/biblioteki mają zostać załadowane. –

+0

<%= %> jest całkowicie poprawny dla ASP.Aplikacje NET. W rzeczywistości jest to jedyny sposób na uzyskanie wartości z kodu do warstwy interfejsu użytkownika przy użyciu MVC ASP.NET. Jeśli korzystasz z formularzy internetowych ASP.NET, to tak, jest to odradzane, ale nadal przydatne do wstrzykiwania wartości po stronie serwera do javascript. –

2

Wersja # jest używana podczas wiązania danych. <% = jest tylko prosty Response.Write

2

Nie do końca związane z pytaniem, jest inny, powiązany notacja w asp.net nazwie Expression Builder:

<asp:SqlDataSource ... Runat="server" 
ConnectionString="<%$ ConnectionStrings:Northwind %>" 
/> 

<asp:Literal Runat="server" 
    Text="<%$ Resources:MyResources, MyText %>" 
/> 

i jest rozszerzalna, zobacz http://msdn.microsoft.com/en-us/magazine/cc163849.aspx#S4

0

JavaScript w aspx, który używa stronę wzorcową.

var e = document.getElementById('<%= lblDescription.ClientID %>'); 
e.innerHTML = 'getElementById(\'lblDescription\') will be null';