Creazione di un controller (VB)
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).
Figura 01: Aggiunta di un nuovo controller (fare clic per visualizzare l'immagine a dimensione intera)
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.
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:
- 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).
- Assegnare alla nuova classe il nome PersonController.vb e fare clic sul pulsante Aggiungi .
- Modificare il file di classe risultante in modo che la classe erediti dalla classe base System.Web.Mvc.Controller (vedere Listato 3).
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).