Sono <%: e <% = la stessa cosa dei blocchi di codice (espressione) emessi

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.