Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 in base alla mano.
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 Esplora soluzioni di Visual Studio e selezionare l'opzione di menu Aggiungi, Controller (vedere Figura 1). Se si seleziona questa opzione di menu, viene visualizzata la finestra di dialogo Aggiungi controller (vedere la figura 2).
Figura 01: Aggiunta di un nuovo controller(Fare clic per visualizzare l'immagine full-size)
Figura 02: Finestra di dialogo Aggiungi controller (Fare clic per visualizzare l'immagine full-size)
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 mancante del suffisso Controller , non sarà possibile richiamare il controller. Non farlo - ho sprecato innumerevoli ore della mia vita dopo aver fatto questo errore.
Elenco 1 - Controller\ProductController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace MvcApplication1.Controllers
{
public class ProductController : Controller
{
//
// GET: /Product/
public ActionResult Index()
{
return View();
}
}
}
È consigliabile creare sempre controller nella cartella Controller. In caso contrario, si violano le convenzioni di ASP.NET MVC e altri sviluppatori avranno un tempo più difficile comprendere l'applicazione.
Metodi di azione Scaffolding
Quando si crea un controller, è possibile generare automaticamente metodi di azione Create, Update e Details (figura 3). Se si seleziona questa opzione, viene generata la classe controller in List 2.
Figura 03: Creazione automatica di metodi di azione (Fare clic per visualizzare l'immagine full-size)
Elenco 2 - Controller\CustomerController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace MvcApplication1.Controllers
{
public class CustomerController : Controller
{
//
// GET: /Customer/
public ActionResult Index()
{
return View();
}
//
// GET: /Customer/Details/5
public ActionResult Details(int id)
{
return View();
}
//
// GET: /Customer/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Customer/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Customer/Edit/5
public ActionResult Edit(int id)
{
return View();
}
//
// POST: /Customer/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}
}
Questi metodi generati sono metodi stub. È necessario aggiungere la logica effettiva per la creazione, l'aggiornamento e la visualizzazione dei dettagli per un cliente stesso. Ma, i metodi stub offrono un bel punto di partenza.
Creazione di una classe Controller
Il controller MVC ASP.NET è solo una classe. Se si preferisce, è possibile ignorare il pratico scaffolding del controller di Visual Studio e creare una classe controller in base alla mano. Seguire questa procedura:
- Fare clic con il pulsante destro del mouse sulla cartella Controller e selezionare l'opzione di menu Aggiungi, Nuovo elemento e selezionare il modello di classe (vedere La figura 4).
- Assegnare un nome alla nuova classe PersonController.cs e fare clic sul pulsante Aggiungi .
- Modificare il file di classe risultante in modo che la classe eredita dalla classe base System.Web.Mvc.Controller (vedere Elenco 3).
Figura 04: Creazione di una nuova classe(Fare clic per visualizzare l'immagine full-size)
Elenco 3 - Controller\PersonController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication1.Controllers
{
public class PersonController : System.Web.Mvc.Controller
{
public string Index()
{
return "Hello World!";
}
}
}
Il controller nell'elenco 3 espone un'azione denominata Index() che restituisce la stringa "Hello World!". È possibile richiamare questa azione 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 mouse sull'icona per il server di sviluppo ASP.NET nell'area di notifica di Windows (in basso a destra dello schermo).