free hit counter
July, 2009 - Pietro Brambati Blog - Site Home - MSDN Blogs

Pietro Brambati Blog

Developer's stories

July, 2009

  • Pietro Brambati Blog

    Il nuovo ASP.NET MVC 2 – Preview 1

    • 0 Comments

    Dato che oggi è stato rilasciata la preview 1 di ASP.NET MVC 2 ho deciso di aggiornare il progetto che avevo usato a Remix09 alla nuova versione per esplorare un po’ delle nuove funzionalità. (ASP.NET MVC 1.0 e ASP.NET MVC 2 possono coesistere side-by-side senza problemi)

    Nella Release Note è documentato come aggiornare manunalmente il progetto, modificando gli assembly referenziati e il web.config.

    Nel mio caso, dopo aver scaricato ed installato i bit ho creato un progetto con il nuovo template per Visual Studio 2008 SP1, che vedete in figura :

    image

    Quindi ho fatto un semplice taglia e copia dei folder che mi intersessavano, più qualche modifica:

    • AppData: che conteneva il database delle sessioni
    • il file remix09.css che ho messo nel folder Content
    • il mio controller HomeController.cs
    • Tutto il contenuto della cartella Model, che contiene i file per implementare il Repository per le sessioni ISessionsRepository.cs, la classe repository SessioniRepository.cs ed il file di Entity Framework per le cassi del mio modello
    • ho aggiunto la stringa di connessione al mio web.config
    • Ho sostituito il folder Views/Home con le view che avevo fatto
    • Ho sostituito la pagina Views/SharedViews/Site.Master con quella usata nel vecchio progetto
    • ho fatto il find & replace del namespace che usavo nel precedente progetto con il nuovo namespace, che nel mio caso si chiama Remix09Mvc2preview1 (il nome che ho dato al progetto). Attenzione alle views che se strongly-typed, come nel mio caso, contengono il riferimento al nome completo delle classi.
    • ho aggiunto nella sezione assemblies, nel web.config, il riferimento, prendendolo dal web. config del progetto vecchio, a System.Data.Entity che viene usato da Entity Framework

    Ed ecco la mia demo funzionare come prima :

    image  

    DataAnnotation: validazione

    Una delle novità riguarda l’utilizzo del meccanismo delle DataAnnotation, già usato dai Dynamic Data e nei RIA Services, con cui posso aggiungere degli  attributi alla mia classe del Modello, nel mio caso ho un’unica classe che descrive una “Sessione”, dato che l’intera applicazione consente di gestire le sessione dell’evento Remix.

    Nella demo di Remix, potevo creare una nuova sessione, ma non veniva verificato se, ad esempio titolo e sessione fossero valori diversi da null.

    Con ASP.NET MVC 2 ho un reference già aggiunto, come vedete dalla figura:

    image

    Quindi, come con i Dynamic Data, posso scrivere una classe parziale, che andrò ad aggiungere al Model e che mi dà controllo server-side sulle proprietà della mia classe:

    image

    Ho creato una classe SessioneMetadata nella quale posso specificare delle regole di validazione per le proprietà della classe Sessione. In questo caso l’attributo Required ed il Relativo ErrorMessage fanno si che se inserisco una sessione vuota abbia degli errori di validazione, per ora (:-) ) server-side, come vedete dalla figura, dove ho usato la stessa View, senza nessuna modifica, che ho usato con la versione 1.0 di ASP.NET MVC.

    image

    Esitono altre varianti che consentono di usare, ad esempio, espressioni regolari o range numerici specifici per effettuare la validazione.

    UI helper: strongly-typed e supporto ai Template

    Se vado a rivedere il codice della View per la creazione di una nuova sessione, vedete che vengono usate delle stringhe per identificare il nome delle proprietà della mia classe ( “Titolo”, “Sessione”, etc) che poi verranno usati per creare l’oggetto che devo creare. Un errore in questi nomi, come immaginerete, produrrà un errore a run-time dell’applicazione. Nuovi UI helper consentono di usare lamba expression e forte tipizzazione, permettendo di evitare errori a run-time, avendo controllo di quello che viene generato già a design-time.

    La vecchia pagina appare così: vedete le stringhe Titolo e Speaker:

    image

    Posso riscrivere così il codice con il nuovo helper Html.EditorFor e come vedete dalla figura seguente ho anche l’intellisence che mi aiuta.

    image 

    Potrei anche usare l’EditorFor per far generare tutti i campi necessari per la creazione di un oggetto; in questo caso dato che verrebbero visualizzate anche proprietà della classe sessione che non mi servono o non voglio esporre dovrei “disabilitare” le proprietà  che non voglio usando sempre il meccanismo introdotto con i Dynamic Data usando l’attributo [ScaffoldColumn (false)].Oltre a  Html.EditorFor, troviamo anche altri html helper, come html.LabelFor, html.DisplayFor.

    I nuovi metodi della classe Helper supportano anche l’uso di template. Nell’esempio precedente al posto di una TextBox dove inserire le track, potrei avere una più comoda DropDownList, con le 3 tracce. Per questo aggiungiamo una cartella EditorTemplate, dove andremo a mettere il template in questione aggiungiamo un MVC User Control nelle Shared View in modo da essere usabile da tutti i controllers del progetto.

    image

    L’implementazione del codice dello User Control è molto semplice e per usarlo dall’ Html.EditorFor, basta quindi, usare il secondo parametro:

    image

    Ci sono altre novità in ASP.NET MVC 2 – Preview 1: il concetto di “Area”, l’attributo HttpPost, supporto ai dati in formato binario nel DeafultModelBinder, ma per questo vi lascio agli approfondimementi…

    Per approndimenti

  • Pietro Brambati Blog

    Cosa ho fatto nelle ultime settimane

    • 4 Comments

    Questo post è assolutmente non tecnico.

    Nelle ultime settimane mi sono trovato alle prese con un trasloco, il mio. La definizione di trasloco è assolutamente riduttiva, nel senso che non prevedeva solo lo spostarsi dal punto A al punto B, la cui distanza è assolutamente irrisoria, ma anche preparare il punto B, la mia nuova casa, ad ospitare me è la mia famiglia, il tutto in un ristretto time-frame.

    La preparazione prevedeva:

    • preparazione delle pareti della nuova abitazione: stuccatura, rimozione degli zoccolini, preparazione delle pareti con carta vetrata
    • spostare una serie di prese elettriche con lavori di muratura
    • verniciare tutta la casa, in “modo moderno”, come dice mia moglie
    • acquisto di nuovi lampadari con relativa istallazione: per alcuni vi assicuro non è stata una cosa semplice
    • lamature e verniciatura del parquet
    • spostamento di mobili

    Avendo tempi molto stringenti, ho dovuto fare io parte dei lavori, cosa che mi ha assorbito in attività della durata di circa 12h al giorno, ma se ripenso a quest’esperienza qualche insegnamento me lo porto a casa (scusate il gioco di parole):

    • la pianificazione è fondamentale, sopratutto quando ci sono molte dipendenze nei lavori. Ho ad esempio optato per fare parte dei lavori di imbiancatura prima della rilamatura del parquet e parte dopo: questo mi ha consentito di sfruttare i giorni  precedenti alla rilamatura, lavoro che non era spostabile in nessun modo.
    • gli strumenti di lavoro sono essenziali: qualcuno diceva “non ci vuole un pennello grande, ma un grande pennello …”, ok o qualcosa del genere
    • Non lesinare sui materiali impiegati, soprattutto se non si è degli esperti. Usare delle pitture a costo più basso, usate per comodità, mi ha costretto a rifare il lavoro
    • Non tralasciare i particolari delle cose che non si conosce: dare una pittura verde pastello non è la stessa cosa che dare una pittura scura sul bordeaux, da non crederci, per me.
    • Non credere ai tempi di pianificazione fatti da altri, perchè potrebbero sbagliarsi :-)
    • Pianificare come usare le proprie energie e come recuperarle perchè lavorare 20 gg /12h giorno non è uno scherzo, in modo di riuscire ad arrivare alla fine sani e salvi
    • la cucina è un elemento critico perchè prevede lavori di idraulica, elettrici, mobili da allineare all prese, impianti etc.
    • Ed infine, prepararsi all’impossibile :-)

    Potrei proseguire…, ma nel frattempo ho visto che sono disponibili i video di Remix 09 delle mie sessioni:

    Che già richiedono un po’ di update, dato il rilascio di Silverlight 3 RTM e dei RIA Services July CTP

Page 1 of 1 (2 items)