Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Procedura dettagliata: organizzazione di un'applicazione mediante aree

Il modello MVC separa la logica di dati del modello di un'applicazione dalla logica di presentazione e dalla logica di business. In ASP.NET MVC questa separazione logica viene inoltre implementata fisicamente nella struttura del progetto, in cui controller e visualizzazioni vengono conservati in cartelle che utilizzano convenzioni di denominazione per la definizione di relazioni. Questa struttura soddisfa le necessità della maggior parte delle applicazioni Web.

Tuttavia, alcune applicazioni possono disporre di un numero elevato di controller e ogni controller può essere associato a più visualizzazioni. Per questi tipi di applicazioni, la struttura del progetto MVC ASP.NET predefinita può diventare difficile da gestire.

Per ospitare progetti di grandi dimensioni, MVC ASP.NET consente di partizionare le applicazioni Web in unità minori definite aree. Tramite le aree è possibile separare un'applicazione Web MVC di grandi dimensioni in raggruppamenti funzionali più piccoli. Un'area consiste di fatto in una struttura MVC posta all'interno di un'applicazione. Un'applicazione può contenere diverse strutture MVC (aree).

Ad esempio, una singola applicazione di e-commerce di grandi dimensioni potrebbe essere divisa in aree che rappresentano la vetrina, le revisioni dei prodotti, l'amministrazione degli account utente e il sistema di acquisto. Ogni area rappresenta una funzione separata dell'applicazione nel complesso.

In questa procedura dettagliata viene dimostrato come implementare aree in un'applicazione MVC ASP.NET. Nella procedura dettagliata viene creato il framework funzionale per un sito blog che dispone delle aree seguenti:

  • Principale. Rappresenta il punto di ingresso dell'applicazione Web. Quest'area include la pagina di destinazione e una funzionalità di accesso.

  • Blog. Quest'area viene utilizzata per visualizzare i post del blog ed eseguire ricerche nell'archivio.

  • Dashboard. Quest'area viene utilizzata per creare e modificare i post del blog.

Per rendere semplice l'esercitazione, le aree non contengono la logica per l'esecuzione delle attività effettive per il blog.

Come complemento a questo argomento è disponibile un progetto di Visual Studio con codice sorgente: Download.

Per completare questa procedura dettagliata, è necessario:

  • Microsoft Visual Studio 2008 Service Pack 1 o Visual Web Developer 2008 Express Edition Service Pack 1, o una versione successiva.

  • Framework di ASP.NET MVC 2. Se è stato installato Visual Studio 2010, ASP.NET MVC 2 è già presente sul computer. Per scaricare la versione più aggiornata del framework, vedere la pagina di download di MVC ASP.NET.

Nella procedura dettagliata si presuppone che l'utente abbia familiarità con MVC ASP.NET. Per ulteriori informazioni, vedere ASP.NET MVC 2.

Per iniziare, si creerà un progetto MVC ASP.NET e si aggiungerà la struttura di cartelle per due aree figlio (Blog e Dashboard).

Per creare la struttura dell'applicazione

  1. In Visual Studio, scegliere Nuovo progetto dal menu File.

  2. Nella finestra Tipi di progetto espandere il nodo Visual Basic o Visual C#, quindi selezionare il nodo Web.

  3. Nella finestra Modelli selezionare Applicazione Web ASP.NET MVC 2.

  4. Denominare il progetto MvcAreasApplication, impostare il percorso, quindi selezionare la casella di controllo Crea directory per soluzione.

  5. Fare clic su OK.

  6. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto, scegliere Aggiungi, quindi fare clic su Area.

  7. In Nome Area digitare Blog e quindi scegliere Aggiungi.

    La cartella Aree viene aggiunta al progetto. La cartella Aree contiene una struttura di cartelle che consente a ogni area figlio di disporre di modelli, visualizzazioni e controller propri.

  8. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto, scegliere Aggiungi, quindi fare clic su Area.

  9. In Nome Area immettere Dashboard e quindi scegliere Aggiungi.

    Al termine, la cartella Aree conterrà due aree figlio, Blog e Dashboard.

Si aggiungeranno ora controller abilitati per le aree e metodi di azione per ogni area.

Per aggiungere controller per le aree

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla sottocartella Controller dell'area Blog, scegliere Aggiungi, quindi Controller.

  2. Denominare il controller BlogController, quindi fare clic su Aggiungi.

  3. Aggiungere il codice seguente alla classe BlogController.

    Tramite questo codice vengono creati due metodi di azione denominati ShowRecent e ShowArchive. Per rendere semplice l'esercitazione, i metodi di azione non contengono la logica per l'esecuzione di attività specifiche.

  4. Nell'area Dashboard fare clic con il pulsante destro del mouse sulla sottocartella Controller, scegliere Aggiungi, quindi Controller.

  5. Denominare il controller DashboardController e fare clic su Aggiungi.

  6. Aggiungere il codice seguente alla classe DashboardController.

    Tramite questo codice vengono creati due metodi di azione denominati AddPost e EditPost. Per rendere semplice l'esercitazione, i metodi di azione non contengono la logica per l'esecuzione di attività specifiche.

Si aggiungeranno quindi visualizzazioni abilitate per le aree per ogni metodo di azione.

Per aggiungere visualizzazioni per le aree

  1. Aprire la classe BlogController, fare clic con il pulsante destro del mouse all'interno del metodo di azione ShowRecent, scegliere Aggiungi visualizzazione, quindi Aggiungi.

  2. Nella visualizzazione ShowRecent aggiungere il seguente markup al contenuto della pagina, dopo l'intestazione:

    <p><%= Html.ActionLink("Show Archive", "ShowArchive") %></p>
    

    Tramite questo markup si crea un collegamento al metodo di azione ShowArchive creato in precedenza.

  3. Fare clic con il pulsante destro del mouse all'interno del metodo ShowArchive, scegliere Aggiungi visualizzazione, quindi Aggiungi.

  4. Nella visualizzazione ShowArchive aggiungere il seguente markup al contenuto della pagina, dopo l'intestazione:

    <p><%= Html.ActionLink("Show Recent", "ShowRecent") %></p>
    
  5. Aprire la classe DashboardController, fare clic con il pulsante destro del mouse all'interno del metodo di azione AddPost, scegliere Aggiungi visualizzazione, quindi Aggiungi.

  6. Nella visualizzazione AddPost aggiungere il seguente markup al contenuto della pagina, dopo l'intestazione:

    <p><%= Html.ActionLink("Edit Post", "EditPost") %></p>
    
  7. Fare clic con il pulsante destro del mouse all'interno del metodo EditPost, scegliere Aggiungi visualizzazione, quindi Aggiungi.

  8. Nella visualizzazione EditPost aggiungere il seguente markup al contenuto della pagina, dopo l'intestazione:

    <p><%= Html.ActionLink("Add Post", "AddPost") %></p>
    

Quando si aggiunge un'area a un progetto, viene definita una route per l'area in un file AreaRegistration. La route invia richieste all'area in base all'URL della richiesta. Per registrare le route per le aree, si aggiunge codice al file Global.asax in grado di trovare automaticamente le route delle aree nel file AreaRegistration.

Per registrare le route delle aree

  1. In Esplora soluzioni aprire il file Global.asax per il progetto.

  2. Inserire il codice riportato di seguito nel metodo Application_Start :

    AreaRegistration.RegisterAllAreas();
    

    AreaRegistration.RegisterAllAreas()
    

    Tramite questo codice vengono chiamati i metodi di registrazione delle route per ogni area figlio.

In un'applicazione di area MVC ASP.NET è possibile inserire collegamenti all'interno di un'area analogamente a qualsiasi applicazione MVC. Ad esempio, è possibile chiamare il metodo ActionLink o qualsiasi altra routine che accetti un nome di controller o di azione (ad esempio il metodo RedirectToAction).

Per generare un collegamento a un'area diversa, è tuttavia necessario passare in modo esplicito il nome dell'area di destinazione nel parametro routeValues per questi metodi. Ad esempio, nel markup seguente viene illustrato un collegamento al metodo di azione ShowBlog della classe BlogController. Questa chiamata non identifica un'area specifica.

<%= Html.ActionLink("Show Blog", "ShowBlog", "Blog") %>

Il collegamento funzionerà come previsto in qualsiasi punto all'interno dell'area Blog. Se tuttavia il collegamento precedente viene aggiunto a una visualizzazione nell'area Dashboard, verrà generato un errore. Ciò avviene perché il framework di MVC ASP.NET non sarebbe in grado di trovare la classe BlogController nell'area Dashboard.

Nell'esempio seguente viene mostrato come creare un collegamento che identifica l'area in un oggetto anonimo passato nel parametro routeValues. Questo esempio viene mostrato solo a scopo esplicativo. Non aggiungerlo al progetto.

<%= Html.ActionLink("Show Blog", "ShowBlog", "Blog", new { area = "blog" }, null) %>
NotaNota:

L'ultimo parametro null (Nothing in Visual Basic) è obbligatorio solo perché gli overload del metodo ActionLink con un parametro routeValues dispongono anch'essi di un parametro htmlAttributes. Tuttavia, questo parametro non è necessario per poter eseguire collegamenti tra le aree.

Aggiunta di contenuto al progetto principale

Quando si è creata la soluzione di Visual Studio per questa procedura dettagliata, il modello della soluzione includeva una visualizzazione master che funge da punto di ingresso per l'applicazione. In questa sezione della procedura dettagliata si aggiungeranno alla visualizzazione master schede di collegamento alle aree figlio. Si aggiungerà inoltre codice per visualizzare informazioni diagnostiche, includendo il nome del controller, del metodo di azione e dell'area che ha prodotto la visualizzazione corrente.

Per aggiungere contenuto al progetto principale

  1. Aprire la visualizzazione master (Views\Shared\Site.Master).

  2. Inserire il codice seguente subito dopo l'elemento <asp:ContentPlaceHolder ID="MainContent" runat="server" />.

    Tramite questo codice vengono aggiunte informazioni diagnostiche alle visualizzazioni.

  3. Nello stesso file trovare l'elemento <ul id="menu"> e sostituirlo per intero con il codice seguente:

    Tramite questo codice vengono aggiunte le schede per il collegamento delle aree.

Ora è possibile compilare e testare l'applicazione.

Per compilare ed eseguire l'applicazione

  1. Premere CTRL-F5 per compilare la soluzione ed eseguire l'applicazione.

    Nel browser verrà visualizzata la home page del modello MVC predefinito. Nella pagina vengono visualizzati il controller corrente (Home), l'azione che ha generato la pagina (Index) e l'area corrente, che è vuota e indica l'area principale.

  2. Fare clic sulla scheda Blog.

    Verrà visualizzata la pagina ShowBlog. La pagina ShowBlog contiene un collegamento alla pagina ShowArchive. Il controller corrente viene modificato in Blog. L'azione è ShowBlog, mentre l'area è blog.

  3. Fare clic su Mostra archivio.

    Il controller e l'area restano invariati, ma l'azione ora è ShowArchive.

  4. Fare clic sulla scheda Dashboard.

    Verrà visualizzata la pagina AddPost. La pagina AddPost contiene un collegamento alla pagina EditPost. Il controller corrisponde ora a Dashboard, l'azione a AddPost e l'area a dashboard.

  5. Continuare a esplorare il sito Web e notare le modifiche apportate al controller, all'azione e all'area.

Aggiunte alla community

AGGIUNGI
Mostra: