Condividi tramite


Creazione di un controller (VB)

di Stephen Walther

In questa esercitazione Stephen Walther illustra come aggiungere un controller a un'applicazione MVC ASP.NET.

L'obiettivo di questa esercitazione è spiegare come creare nuovi controller MVC ASP.NET. Si apprenderà come creare controller usando l'opzione di menu Aggiungi controller di Visual Studio e creando un file di classe manualmente.

Uso dell'opzione di menu Aggiungi controller

Il modo più semplice per creare un nuovo controller consiste nel fare clic con il pulsante destro del mouse sulla cartella Controller nella finestra di visual Studio Esplora soluzioni e selezionare l'opzione di menu Aggiungi controller (vedere la figura 1). Selezionando questa opzione di menu si apre la finestra di dialogo Aggiungi controller (vedere la figura 2).

Screenshot della finestra di Esplora soluzioni di Visual Studio, che mostra le opzioni Aggiungi e Controller nel menu di scelta rapida.

Figura 01: Aggiunta di un nuovo controller (fare clic per visualizzare l'immagine a dimensione intera)

Screenshot della finestra di dialogo Aggiungi controller, che mostra il controller predefinito 1 nel campo Nome controller.

Figura 02: Finestra di dialogo Aggiungi controller (fare clic per visualizzare l'immagine a dimensione intera)

Si noti che la prima parte del nome del controller è evidenziata nella finestra di dialogo Aggiungi controller . Ogni nome del controller deve terminare con il suffisso Controller. Ad esempio, è possibile creare un controller denominato ProductController ma non un controller denominato Product.

Se si crea un controller che manca il suffisso Controller , non sarà possibile richiamare il controller. Non farlo - ho sprecato innumerevoli ore della mia vita dopo aver commesso questo errore.

Elenco 1 - Controllers\ProductController.vb

Public Class ProductController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Product/

    Function Index() As ActionResult
        Return View()
    End Function

End Class

È sempre necessario creare controller nella cartella Controllers. In caso contrario, si violano le convenzioni di ASP.NET MVC e altri sviluppatori avranno un tempo più difficile per comprendere l'applicazione.

Metodi di azione di scaffolding

Quando si crea un controller, è possibile generare automaticamente i metodi di azione Create, Update e Details (Vedere la figura 3). Se si seleziona questa opzione, viene generata la classe controller nell'elenco 2.

Creazione automatica dei metodi di azione

Figura 03: Creazione automatica dei metodi di azione (fare clic per visualizzare l'immagine a dimensione intera)

Elenco 2 - Controllers\CustomerController.vb

Public Class CustomerController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Customer/

    Function Index() As ActionResult
        Return View()
    End Function

    '
    ' GET: /Customer/Details/5

    Function Details(ByVal id As Integer) As ActionResult
        Return View()
    End Function

    '
    ' GET: /Customer/Create

    Function Create() As ActionResult
        Return View()
    End Function

    '
    ' POST: /Customer/Create

    <AcceptVerbs(HttpVerbs.Post)> _
    Function Create(ByVal collection As FormCollection) As ActionResult
        Try
            ' TODO: Add insert logic here
            Return RedirectToAction("Index")
        Catch
            Return View()
        End Try
    End Function

    '
    ' GET: /Customer/Edit/5

    Function Edit(ByVal id As Integer) As ActionResult
        Return View()
    End Function

    '
    ' POST: /Customer/Edit/5

    <AcceptVerbs(HttpVerbs.Post)> _
    Function Edit(ByVal id As Integer, ByVal collection As FormCollection) As ActionResult
        Try
            ' TODO: Add update logic here

            Return RedirectToAction("Index")
        Catch
            Return View()
        End Try
    End Function
End Class

Questi metodi generati sono metodi stub. È necessario aggiungere la logica effettiva per la creazione, l'aggiornamento e la visualizzazione dei dettagli per un cliente. Tuttavia, i metodi stub forniscono un buon punto di partenza.

Creazione di una classe controller

Il controller MVC ASP.NET è solo una classe. Se si preferisce, è possibile ignorare lo scaffolding pratico del controller di Visual Studio e creare manualmente una classe controller. Seguire questa procedura:

  1. Fare clic con il pulsante destro del mouse sulla cartella Controller e scegliere l'opzione di menu Aggiungi, Nuovo elemento e selezionare il modello Classe (vedere la figura 4).
  2. Assegnare alla nuova classe il nome PersonController.vb e fare clic sul pulsante Aggiungi .
  3. Modificare il file di classe risultante in modo che la classe erediti dalla classe base System.Web.Mvc.Controller (vedere Listato 3).

Creazione di una nuova classe

Figura 04: Creazione di una nuova classe (fare clic per visualizzare l'immagine a dimensione intera)

Elenco 3 - Controllers\PersonController.vb

Public Class PersonController
    inherits Controller

    Function Index AS String
        Return "Hello World!"
    End Function

End Class

Il controller nell'elenco 3 espone un'azione denominata Index() che restituisce la stringa "Hello World!". È possibile richiamare questa azione del controller eseguendo l'applicazione e richiedendo un URL simile al seguente:

http://localhost:40071/Person

Nota

Il ASP.NET Development Server usa un numero di porta casuale, ad esempio 40071. Quando si immette un URL per richiamare un controller, è necessario specificare il numero di porta corretto. È possibile determinare il numero di porta passando il puntatore del mouse sull'icona per il server di sviluppo ASP.NET nell'area di notifica di Windows (in basso a destra dello schermo).