Avendo appena iniziato con MVC 2, noto che nel loro modello di partenza usano
ed ero sicuro che in MVC 1 lo fosse
Sono la stessa cosa? Se è così, perché il passaggio da segno uguale a due punti.
la syntax dei due punti significa che sarai automaticamente codificato in html: http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx
Non potevano semplicemente codificare in html tutti i blocchi <%=
esistenti, perché le cose che sono già correttamente codificate (che si spera la maggior parte dei progetti là fuori) sembrerebbero strane.
<%=
è usato per scrivere sul buffer di output.
<%:
è usato per scrivere sul buffer di output, dopo la codifica HTML del contenuto ... A meno che l'interfaccia IHtmlString
sia stata implementata sull'object restituito.
Scott Guthrie ha un post eccellente su questo argomento: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp- net-4-e-asp-net-mvc-2.aspx
Se l'output è già stato sfuggito, è ansible impedire la doppia codifica implementando l'interfaccia IHtmlString
sull'object restituito. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx
ASP .NET 4 ha introdotto la syntax <%: che codifica l'output prima di renderlo sullo schermo. ASP MVC stava già codificandolo, ma per essere più espliciti hanno iniziato a usare anche la sintassi per chiarire che ogni volta che vedi il <%: puoi essere sicuro che l'output sarà codificato correttamente.