2008-10-01 13 views
10

Disculpe mi ignorancia de ASP, pero ¿cuál es la diferencia?¿Cuál es la diferencia entre <%# %> y <%= %>?

+0

posible duplicado de [¿Cuál es la diferencia entre las etiquetas <% # y <% = etiquetas de apertura?] (Http://stackoverflow.com/questions/100853/what-is-the-difference-between- the-and-opening-tags) –

+0

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

Respuesta

17

Estos son informalmente llamados "picaduras de abeja". Hay 4 tipos:

<%# %> se invoca durante la fase de enlace de datos.

<%= %> se utiliza para obtener valores del código en la capa de la interfaz de usuario. Significó compatibilidad con versiones anteriores con aplicaciones ASP. No debería usarse en .NET.

<%@ %> representa directives y permite establecer comportamientos sin recurrir al código.

<%: %> (introducido en ASP.NET 4) es lo mismo que %=, pero con la funcionalidad adicional de HtmlEncoding de la salida. La intención es que este sea el uso predeterminado (más de %=) para ayudar a proteger contra los ataques de inyección de scripts.

directivas especifican configuraciones que son utilizado por la página y la facilidad de control de compiladores cuando se procesan los compiladores páginas ASP.NET Web Forms (archivos .aspx) y de control de usuario (.ascx) archivos.

ASP.NET trata a cualquier bloque Directiva (<% @%>) que no contiene un nombre de la directiva explícita como una directiva @ Page (de una página) o como un @ directiva de control (para un usuario control).

@Esteban - Se agregó un enlace msdn a las directivas. Si necesita ... más explicación, por favor hágamelo saber.

+0

Swait, podría usted por favor exponer en <%@ %>. No estoy seguro de entender lo que quieres decir. ¡Gracias! –

+0

Eche un vistazo a cualquier página .NET que tenga con AJAX o páginas maestras. Encontrará la directiva <%@ $> para indicar qué páginas/bibliotecas se deben cargar. –

+0

<%= %> es perfectamente válido para ASP.Aplicaciones NET. De hecho, es la única forma de obtener valores del código en la capa de la interfaz de usuario con ASP.NET MVC. Si está utilizando formularios web ASP.NET, entonces sí, se desaconseja, pero sigue siendo útil para inyectar valores secundarios del servidor en javascript. –

2

La versión # se utiliza al vincular datos. <% = es sólo un simple Response.Write

2

No del todo relacionada con la pregunta, hay otra anotación relacionada en asp.net llamado generador de expresiones:

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

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

y es extensible, ver http://msdn.microsoft.com/en-us/magazine/cc163849.aspx#S4

0

Javascript en .aspx que utiliza una página maestra.

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