ASP.NET MVC 2 ha purtroppo mancato l'appuntamento con la prima beta release di Visual Studio 2010, per cui c'è veramente tanto da dire su quanto è stato incluso nella Beta 2.
ModelMetadata e Model Validation
Una prima novità è rappresentata dall'introduzione dei ModelMetadata, vale a dire un'infrastruttura per associare metadati ad un model che consente, ad esempio, di specificare la formattazione secondo cui mostrare a video una property, la sua descrizione o indicare un'insieme di validatori che ne verifichino la consistenza.
Quest'infrastruttura è completamente provider-based: ASP.NET MVC 2 fornisce già un DataAnnotationsMetadataProvider che consente di recuperare queste informazioni tramite le DataAnnotations introdotte in ASP.NET Dynamic Data, ma è possibile realizzare propri provider per recuperarle da una qualsiasi sorgente (XML, Database, ecc.).
Un ulteriore plauso va anche all'aggiunta di un supporto ufficiale alla validazione lato client, realizzata tramite jQuery e, ancora una volta, impostabile in maniera del tutto dichiarativa direttamente sul model tramite l'infrastruttura di DataAnnotiations.
HttpVerb override
Come sappiamo, già dalla prima versione di MVC è possibile specificare a quali verbi Http (GET, POST, PUT, DELETE) debba rispondere una action. Essi sono molto utili nel caso si voglia utilizzare ASP.NET MVC per esporre servizi REST, mentre il loro utilizzo rimane di fatto molto limitato nell'ambito di applicazioni con interfaccia utente, dato che i browser tipicamente utilizzano solo GET e POST.
ASP.NET MVC 2 introduce un nuovo Html Helper, chiamato HttpMethodOverride, che può essere utilizzato in una view per renderizzare un particolare campo Hidden:
<form action="/sampleDeleteAction" method="post"> <%= Html.HttpMethodOverride(HttpVerbs.Delete) %> ... </form>
L'effetto è quello di sovrascrivere l'effettivo verbo inviato dal browser (nella fattispecie, un POST) con un DELETE, scatenando quindi l'esecuzione di una action decorata con HttpDeleteAttribute:
[HttpDelete] public ActionResult SampleDeleteAction(...) { // ... more code here }
Tutto questo per fare cosa? Semplice: se esponiamo API di tipo REST e magari gestiamo tutti i verbi Http e non solo Get e Post, possiamo comunque continuare a riutilizzare i medesimi controller anche quando invece interagiamo con un browser.
Single-Project Areas
Già in ASP.NET MVC 2 Preview 1 era stato introdotto il concetto di Project Areas, tramite le quali era possibile suddividere un'applicazione di grandi dimensioni in diversi progetti Visual Studio indipendenti. La preview 2 amplia questa funzionalità tramite le Single Project Areas, ossia suddivisioni logiche dell'applicazione (e quindi controller, model, view e regole di routing indipendenti) all'interno dello stesso progetto.
Maggiori informazioni sul concetto di Area possono essere reperite in questo post di Scott Guthrie, relativo alla vecchia Preview 1.
Html Encoding Code Block
Il metodo più sicuro per evitare attacchi di script injection nella propria web application è quello di effettuare l'HtmlEncode di qualsiasi dato potenzialmente a rischio nell'ambito del rendering di una view. Utilizzando la sintassi compatta
First Name: <%: Model.FirstName %> Last Name: <%: Model.FirstName %>
l'engine di rendering della view si occupa di eseguire in maniera del tutto trasparente questo passaggio. Per approfondire, si veda questo post sul blog di Phil Haack.
Non finisce qui!
In aggiunta a quanto indicato sino ad ora, ASP.NET MVC 2 Preview 2 propone anche tutta una serie di migliorie, bug fix e performance improvements che sono descritte, analogamente a queste nuove funzionalità, nelle release notes ufficiali, scaricabili a questo indirizzo.
Per maggiori informazioni sulle altre tecnologie all'interno del .NET Framework 4.0 si può fare riferimento al nostro speciale.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Visual Studio 11 beta: le novità di ASP.NET MVC 4 e ASP.NET Web Pages 2.0, il 2 marzo 2012 alle 10:03
- WPC 2011: Cosa mi/ci/vi aspetta!, il 14 novembre 2011 alle 08:01
- CDays10, the day after: ringraziamenti, precisazioni, tricchettracc e bombamman, il 18 dicembre 2010 alle 13:17
- ASP.NET Web Forms ai Community Days, nel 2010, il 10 dicembre 2010 alle 09:23
- Inside ModelVirtualCasting #7: Come ti creo una form MVC in 20 secondi (a dire tanto...), il 15 giugno 2010 alle 07:50
- Creare un filtro custom per QueryExtender, il 3 maggio 2010 alle 15:40