Aggiunta di un controller (2012)

di Rick Anderson

Nota

Una versione aggiornata di questa esercitazione è disponibile qui che usa ASP.NET MVC 5 e Visual Studio 2013. È più sicuro, molto più semplice da seguire e dimostra altre funzionalità.

MVC è l'acronimo di model-view-controller. MVC è un modello per lo sviluppo di applicazioni ben architettate, testabili e facili da gestire. Le applicazioni basate su MVC contengono:

  • M odels: classi che rappresentano i dati dell'applicazione e che usano la logica di convalida per applicare regole business per tali dati.
  • V iews: file di modello usati dall'applicazione per generare dinamicamente risposte HTML.
  • Ontrollers C : classi che gestiscono le richieste del browser in ingresso, recuperano i dati del modello e quindi specificano i modelli di visualizzazione che restituiscono una risposta al browser.

Verranno illustrati tutti questi concetti in questa serie di esercitazioni e viene illustrato come usarli per creare un'applicazione.

Iniziamo creando una classe controller. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella Controller e quindi scegliere Aggiungi controller.

Screenshot che mostra la finestra Esplora soluzioni. L'opzione Aggiungi è selezionata nel menu Controller con il pulsante destro del mouse e controller è selezionata nel menu secondario.

Assegnare un nome al nuovo controller "HelloWorldController". Lasciare il modello predefinito come controller MVC vuoto e fare clic su Aggiungi.

aggiungere il controller

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

Screenshot che mostra la scheda Controller dot c s Hello World. Hello World Controller dot c s è selezionata nella cartella Controller nella finestra Esplora soluzioni.

Sostituire il contenuto del file con il codice seguente.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

I metodi controller restituiranno una stringa di HTML come esempio. Il controller è denominato HelloWorldController e il primo metodo precedente è denominato Index. Richiamarlo da un browser. Eseguire l'applicazione (premere F5 o CTRL+F5). Nel browser aggiungere "HelloWorld" al percorso nella barra degli indirizzi. (Ad esempio, nella figura seguente, è http://localhost:1234/HelloWorld.) La pagina nel browser sarà simile alla schermata seguente. Nel metodo precedente il codice ha restituito direttamente una stringa. Hai detto al sistema di restituire solo un codice HTML e ha fatto!

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

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

/[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 nella classe da eseguire. Quindi /HelloWorld/Index causerebbe l'esecuzione Index del metodo della HelloWorldController classe. Si noti che solo per impostazione predefinita è necessario passare a /HelloWorld 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 è specificato in modo esplicito.

Passare 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 il metodo di azione è Welcome. Non è stata ancora usata la parte [Parameters] dell'URL.

Screenshot che mostra un browser con il testo Questo è il metodo di azione di benvenuto nella finestra.

Si modifica 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 il codice usa la funzionalità del parametro facoltativo C# per indicare che il numTimes parametro deve essere predefinito a 1 se non viene passato alcun valore per tale parametro.

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

Eseguire l'applicazione e passare all'URL di esempio (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). È possibile provare diversi valori per name e numtimes nell'URL. Il ASP.NET sistema di associazione di modelli MVC esegue automaticamente il mapping dei parametri denominati dalla stringa di query nella barra degli indirizzi ai parametri nel metodo.

Screenshot che mostra un 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 si vuole che i controller restituiscono direttamente HTML, poiché questo diventa molto complesso per il codice. In genere si userà un file di modello di visualizzazione separato per generare la risposta HTML. Esaminiamo ora come possiamo farlo.