2010-09-16 8 views
5

Quali sono le differenze tra questi tag?codice ASP.NET Espressione, Associazione dati, e altri dichiarativa Expressoins

<% <% # <% = <% $

Ancora più importante, come faccio a visualizzare una proprietà pagina utilizzando la sintassi dichiarativa in un controllo ASP.NET? Sto cercando di farlo in un controllo ASP.NET. Il compito è quello di impostare il testo di un'etichetta, ma non voglio fare questo pro grammaticalmente in caso voglio cambiare il controllo delle uscite. Ottengo un errore sui controlli lato server non può contenere questa sintassi. Non sono sicuro di aver bisogno di un controllo del database per quello che voglio fare, ma questa è un'altra opzione.

risposta parziale in arrivo.

aggiornamento C'è un nuovo tag che ho visto in ASP.NET 4.5? sito

<%:

risposta

9

risposta parziale

citato da Mike Banavige

<%%> Un blocco di codice incorporato è codice server che esegue durante la fase di rendering della pagina . Il codice nel blocco può eseguire la programmazione dichiarazioni e funzioni di chiamata nella classe pagina corrente . http://msdn2.microsoft.com/en-gb/library/ms178135(vs.80).aspx

<% =%> più utile per la visualizzazione di singoli pezzi di informazione. http://msdn2.microsoft.com/en-us/library/6dwsdcf5(VS.71).aspx

<% #%> Sintassi di espressione del binding dei dati. http://msdn2.microsoft.com/en-us/library/bda9bbfx.aspx

<% $%> Espressione ASP.NET. http://msdn2.microsoft.com/en-us/library/d5bd1tad.aspx

<% @%> Sintassi della direttiva. http://msdn2.microsoft.com/en-us/library/xz702w3e(VS.80).aspx

<% - -%> Commenti lato server. http://msdn2.microsoft.com/en-US/library/4acf8afk.aspx

Aggiornamento:

Va bene questo sembra funzionare

<asp:Label ID="MyLabel" runat="server" Text='<%# MyProperty%>'></asp:Label> 

Se uso la sintassi eval poi ho un errore sul controllo databound o uso il <%, allora ho un lato server controlla l'errore. Qualche altro colore apprezzato ... non sono sicuro di capire davvero cosa sta succedendo.

Forse ha qualcosa a che fare con la fase di rendering.

Poche altre osservazioni:

posso usare <% = senza l'associazione dati e ottenere il valore della proprietà, ma non posso usarlo in un controllo lato server senza ottenere l'errore.

Se si utilizza <% in controllo lato server, ma è necessario eseguire un Page.Databind.

È interessante notare che, posso utilizzare <% = o <% # quando voglio rendere il testo che non è all'interno di un controllo. Sebbene quest'ultimo richieda l'associazione dei dati.

Il nuovo <%: sintassi viene spiegato, anche chiamato codice sintassi dell'espressione

Con ASP.NET 4 stiamo introducendo una nuova sintassi espressione codice (<%: %>) che rende output come < % =%> block do - ma che anche HTML automaticamente lo codifica prima di farlo.

http://weblogs.asp.net/scottgu/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2

+0

Un altro trucco: il tag <%# %> deve essere l'unico valore nell'attributo del tag asp.net. es., non puoi avere ... Testo = "$ <% # x.Importo%>" ... Dovrebbe essere ... Testo = "<% #" $ "+ x.Importo%> "... – David

0

No, controlli lato server non può. Ad esempio, ho una proprietà di stringa denominata SkinPath che mi fornisce il percorso completo App_Themes per il tema corrente. Io lo uso nel modo seguente:

<img src='<%= SkinPath %>/Images/myImage.png' /> 

Tuttavia, il seguente non funziona:

<asp:Image ID='image' runat='server' ImageUrl='<%= SkinPath %>/Images/myImage.png' /> 

invece, rende la srcletteralmente nel risultato <img>.

+0

Ho aggiornato la mia risposta. Posso usare <% # e questo funziona con il database su una proprietà. Hai altre spiegazioni perché <% non funziona? È dovuto al modo in cui la fase di rendering funziona? –

+0

Curtis, ho avuto un errore di battitura: avrei dovuto mettere <% = SkinPath%> e no, non ho alcun ragionamento per questo. Ricordo su un progetto prima che ottenessi un errore risolto modificando tutti i <% = in <% #. Alcune cose ti prendono il tempo per capire. Altre volte, lo fai e vieni pagato. :) – Brad

Problemi correlati