CREARE CONTENUTI WEB CON ASP.NET CORE MVC E RAZOR PAGES
Come prima cosa ti lascio il link su azure del progetto completo. Alcune operazioni sono state disabilitate, comunque per avere un’idea su quello che svilupperemo è più che sufficiente. Questo è il link: https://my-course.azurewebsites.net
Andiamo ad estrarre dalle specifiche un paio di punti. Il due ci chiede di realizzare un elenco dei corsi.
Se un utente trova un corso di suo gradimento, come descritto nel punto cinque, entrerà in una pagina di dettaglio del corso con la possibilità di iscriversi per acquistare il corso.
ASP.NET Core ci mette a disposizione due tecnologie altrettanto valide per la realizzazione della UI del progetto. Entrambe si basano sullo stesso stack tecnologico, l’unica differenza sta nel come vengono archiviati i file all’interno del progetto.
Iniziamo a vedere la prima ASP.NET Core MVC. Il Model contiene la logica di Business e accede al database. Una volta estratti i dati dal database li passeremo alla View che ha il compito di presentare i dati in formato HTML sfruttando l’engine Razor. Infine, c’è il controller che gestisce la richiesta dell’utente, passa i dati prima al Model poi alla View.
Vediamo più in dettaglio il pattern MVC. Supponiamo che un utente voglia visualizzare i dettagli del corso con ID=5, estrae le informazioni dalla richiesta e le passa al Model. Il Model con i dati forniti dal Controller estrae i dati da un database e ancora in formato grezzo li mette in un oggetto che passa di nuovo al Controller. Il Controller gira la richiesta alla View per creare un output HTML ben formattato e gradevole all’utente che poi ripassa al controller e quest’ultimo può inviare la risposta al client.
Solo il controller è l’elemento essenziale, in alcune situazione di nicchia la View potrebbero non essere necessaria
Slide riepilogativa.
CREARE UN CONTROLLER E LE SUE ACTION
La classe di un Controller deve stare a delle convenzioni. La prima parte è arbitraria, la seconda Controller deve assumere quel nome. Deriva dalla classe Controller che ci da delle agevolazioni. All’interno ci sono i metodi, il tipo restituito e il nome del metodo che può essere arbitrario. Ritorna un oggetto View definito nella classe base Controller. L’oggetto passato alla View serve alla stessa per produrre markup HTML.
Normalmente l’action Index è quella che restituisce l’elenco dei corsi, mentre Detail il dettaglio.
Ti faccio vedere con un immagine come devono essere organizzate le directory.
Da notare che nella Views ci deve essere una cartella avente lo stesso nome della prima parte del Controller Courses e le sue action Detail nell’esempio, sempre aventi lo stesso nome della Action del controller. Questo per convenzione. L’estensione .cshtml denota una View contenente HTML ma anche codice C#. Vediamo come sono organizzate le Razor Page.
Creiamo il nostro primo Controller.
AGGIUNGERE IL MIDDLEWARE DI ROUTING
Il Middleware di Routing va a vedere se esiste un Controller chiamato Courses, avente un action Detail e trovando corrispondenza potrà gestire lui la richiesta. chiama il Controller con la sua Action, e il Controller restituirà il comando al Middleware producendo una risposta.
Vediamo una volta configurato il Middleware di Routing come appare la pagina. Trovi la spiegazione dettagliata nel codice scaricabile da GITHUB.
Vediamo come funziona il tutto graficamente. Arriva la seguente richiesta /courses/detail/5. Il Middleware di Routing si chiede: Il percorso della richiesta è conforme al template impostato? La risposta è affermativa in quanto la richiesta contiene i tre frammenti.I servizi di ASP.NET Core MVC aggiunti con la riga AddMvc() vanno a cercare un controller chiamato CoursesController, e passano la palla alla sua Action Detail fornendo L’id 5. Questo è sufficiente a produrre la risposta http.
Scrivi un commento