2010-09-14 18 views
5

Qual è la differenza tra <%% e <%:%> nel contesto del motore di visualizzazione ASP.net MVC. Nel libro MVC2 è dato come segue:visualizza modello codice tag - asp.net mvc - regd

  • <% pepite%> codice eseguire codice quando il modello di vista rende.
  • <%:%> i nugget di codice eseguono il codice contenuto al loro interno e quindi rendono il risultato nel flusso di output del modello.

Quando utilizzare il primo e quando utilizzare il secondo?

risposta

7

Il libro è quasi corretto:

<% %> pepite codice eseguire codice quando il modello di vista rende. Quindi, se metti una chiamata alla funzione <div><% MyFunc() %></div>, la funzione verrà eseguita al tempo di rendering dopo l'apertura del tag se div è stato sottoposto a rendering ma prima della chiusura del tag. La funzione può fare tutto ciò che vuoi, controllare alcune condizioni e fallire con eccezione, impostare alcune variabili, usare HttpContext.CurrentContext.Response.Write (o solo Response.Write in webforms) per scrivere sullo stream di risposta.

<%: %> le pepite di codice eseguono il codice contenuto al loro interno e quindi rendono il risultato codificato in HTML nel flusso di output del modello. cioè è la stessa di <% HttpServerUtility.HtmlEncode(HttpContext.CurrentContext.Response.Write(MyFunc()))%>

<%= %> bocconcini codice eseguire il codice contenuto all'interno di esse e quindi rendono il risultato senza html codifica nel flusso di output del modello. è lo stesso di <% HttpContext.CurrentContext.Response.Write(MyFunc())%>

--- MyFunc() negli ultimi due casi deve restituire una stringa. Può anche essere un riferimento ad alcune proprietà di ViewModel o qualsiasi altro nugget di codice che valuta una stringa.

Problemi correlati