2010-07-25 17 views
6

Un collaboratore ha effettuato di recente il check-in in un changeset in cui molte espressioni nel modulo <% = (...)%> sono state modificate in <%: (...)%>.Cosa fa <%: %> in ASP.NET (MVC2)?

Ho un vago ricordo di aver sentito cosa <%: fa, ma non ricordo. È troppo tardi la notte per chiamare il mio collega e Google e Bing sembrano non riuscire a cercare la stringa "<%:".

Qualcuno può illuminarmi, per favore?

+0

correlato, ma non copre questo costrutto - http://stackoverflow.com/questions/160097/whats-the-difference-tra between-and – ChrisF

risposta

12

It HtmlEncode la stringa, se non è già stata codificata.

La "parte non codificata è già stata" è il motivo per cui è stato introdotto MvcHtmlString. MVC2 restituisce MvcHtmlString da molti metodi HtmlHelper per rappresentare stringhe che non devono essere ricodificate. <%:%> non è in grado di ricodificare.

Vedere What is an MvcHtmlString and when should I use it? per una buona discussione.

+0

Grazie. E grazie per avermi indirizzato anche a MvcHtmlString. –

8

Esso avvolge automaticamente l'output sottoposto a rendering in Html.Encode() per evitare attacchi di script.

1

Un modo per ricordare questo è (cortesia: Scott Hanselman) pensa = come un cancello chiuso. Ora apri il cancello ruotandolo di 90 gradi e osservalo dalla stessa vista. vedrai: