Condividi tramite


Aggiunta di un controller (VB)

di Rick Anderson

Questa esercitazione illustra le nozioni di base per la creazione di un'applicazione Web MVC ASP.NET con Microsoft Visual Web Developer 2010 Express Service Pack 1, una versione gratuita di Microsoft Visual Studio. Prima di iniziare, assicurarsi di aver installato i prerequisiti elencati di seguito. È possibile installarli tutti facendo clic sul collegamento seguente: Programma di installazione della piattaforma Web. In alternativa, è possibile installare singolarmente i prerequisiti usando i collegamenti seguenti:

Se si usa Visual Studio 2010 anziché Visual Web Developer 2010, installare i prerequisiti facendo clic sul collegamento seguente: Prerequisiti di Visual Studio 2010.

Per questo argomento è disponibile un progetto Visual Web Developer con VB.NET codice sorgente. Scaricare la versione VB.NET. Se si preferisce C#, passare alla versione C# di questa esercitazione.

MVC è l'acronimo di model-view-controller. MVC è un modello per lo sviluppo di applicazioni in modo che ogni parte abbia una responsabilità separata:

  • Modello: dati per l'applicazione.
  • Visualizzazioni: i file modello usati dall'applicazione per generare dinamicamente risposte HTML.
  • Controller: classi che gestiscono le richieste URL in ingresso all'applicazione, recuperano i dati del modello e quindi specificano i modelli di visualizzazione che eseguono il rendering di una risposta al client.

In questa esercitazione verranno illustrati tutti questi concetti e verrà illustrato come usarli per compilare un'applicazione.

Creare un nuovo controller facendo clic con il pulsante destro del mouse sulla cartella Controller in Esplora soluzioni e quindi scegliendo Aggiungi controller.

AddController

Assegnare al nuovo controller il nome "HelloWorldController" e fare clic su Aggiungi.

2AddEmptyController

Si noti che in Esplora soluzioni a destra è stato creato un nuovo file denominato HelloWorldController.cs e che il file è aperto nell'IDE.

All'interno del nuovo public class HelloWorldController blocco creare due nuovi metodi simili al codice seguente. Verrà restituita una stringa di codice HTML direttamente dal controller come esempio.

Namespace MvcMovie
    Public Class HelloWorldController
        Inherits System.Web.Mvc.Controller

        Public Function Index() As String
            Return "This is my default action..."
        End Function

        Public Function Welcome() As String
            Return "This is the Welcome action method..."
        End Function

    End Class
End Namespace

Il controller è denominato HelloWorldController e il nuovo metodo è denominato Index. Eseguire l'applicazione (premere F5 o CTRL+F5). Dopo aver avviato il browser, aggiungere "HelloWorld" al percorso nella barra degli indirizzi. (Nel mio computer, è http://localhost:43246/HelloWorld) Il browser sarà simile allo screenshot seguente. Nel metodo precedente il codice ha restituito direttamente una stringa. Abbiamo detto al sistema di restituire solo un codice HTML, e lo ha fatto!

Screenshot che mostra il browser con il testo Questa è l'azione predefinita nella finestra.

ASP.NET MVC richiama classi di controller diverse (e metodi di azione diversi all'interno di essi) a seconda dell'URL in ingresso. La logica di mapping predefinita usata da ASP.NET MVC usa un formato simile al seguente per controllare il codice richiamato:

/[Controller]/[ActionName]/[Parameters]

La prima parte dell'URL determina la classe controller da eseguire. Quindi /HelloWorld esegue il mapping alla HelloWorldController classe . La seconda parte dell'URL determina il metodo di azione sulla classe da eseguire. Pertanto , /HelloWorld/Index causerebbe l'esecuzione Index del metodo della HelloWorldController classe . Si noti che è stato necessario visitare /HelloWorld sopra e il Index metodo è stato usato per impostazione predefinita. Questo perché un metodo denominato Index è il metodo predefinito che verrà chiamato su un controller se non ne viene specificato uno in modo esplicito.

Passa a http://localhost:xxxx/HelloWorld/Welcome. Il metodo Welcome viene eseguito e restituisce la stringa "This is the Welcome action method...". Il mapping MVC predefinito è /[Controller]/[ActionName]/[Parameters]. Per questo URL, il controller è HelloWorld e Welcome è il metodo . Non è ancora stata usata la [Parameters] parte dell'URL.

Screenshot che mostra il browser con il testo This is the Welcome action method in the window.

Modificare leggermente l'esempio in modo che sia possibile passare alcune informazioni sui parametri dall'URL al controller, ad esempio /HelloWorld/Welcome?name=Scott&numtimes=4. Modificare il Welcome metodo in modo da includere due parametri, come illustrato di seguito. Si noti che è stata usata la funzionalità del parametro facoltativo VB per indicare che il numTimes parametro deve essere impostato su 1 se non viene passato alcun valore per tale parametro.

Public Function Welcome(ByVal name As String, Optional ByVal numTimes As Integer = 1) As String
    Dim message As String = "Hello " & name & ", NumTimes is: " & numTimes
    Return "" & Server.HtmlEncode(message) & ""
End Function

Eseguire l'applicazione e passare a http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4. È possibile provare valori diversi per name e numtimes. Il sistema esegue automaticamente il mapping dei parametri denominati dalla stringa di query nella barra degli indirizzi ai parametri del metodo.

Screenshot che mostra il browser con il testo Hello Scott Num Times è 4 nella finestra.

In entrambi questi esempi il controller ha eseguito la parte VC di MVC, ovvero la visualizzazione e il funzionamento del controller. Il controller restituisce direttamente l'HTML. In genere, non vogliamo che i controller restituiscono direttamente HTML, perché questo diventa molto complesso per il codice. In genere si userà un file modello di visualizzazione separato per generare la risposta HTML. Vediamo come possiamo farlo.