Qualcuno può spiegare il modello in ASP.NET MVC?

0

Ho sviluppato in passato la classica soluzione ASP.NET. Sto iniziando attualmente a sviluppare soluzioni ASP.NET MVC, ma ho un problema a capire cos'è un modello e cosa dovrebbe contenere.

In passato avevo un oggetto. Ad esempio uno per User , Product e un oggetto per Countries e uno per Product Categories . Quindi all'interno della classe User avevo un metodo per recuperare un utente, salvandolo e aggiornandolo. L'utente obietta le proprietà dove sono associate a caselle di testo o etichette nella pagina .aspx tramite codice codebehind. Quindi la selezione DropDowns per Paese e DropDown per Categorie prodotto è stata anche associata agli oggetti corresbonding.

Ora la mia domanda sul M > Modello in ASP.NET MVC. Cosa dovrebbe contenere e cosa no? Intendo il modello poiché la mia comprensione deve contenere TUTTE le informazioni necessarie per il rendering della pagina. Questo significa che avrò un List<Countries> per le caselle DropDown e anche User.CountryId entrambi all'interno del Modello? E anche l'ErrorMessage deve essere aggiunto al Model quando lancio un'eccezione e voglio mostrarlo sulla stessa pagina? O mi sbaglio? Qual è la differenza tra Model , ViewData e ViewBag ? Quando usare cosa? Domande sulle domande ma forse qualcuno può illuminarmi:)

    
posta STORM 10.08.2016 - 21:29
fonte

2 risposte

-2

La "M" nell'MVC di ASP.NET è meglio pensata come "ViewModel", che è un oggetto che contiene tutto ciò di cui la Vista ha bisogno per rendere le informazioni sullo schermo. Quindi un ViewModel è un po 'specifico per una "pagina" della tua applicazione MVC (anche se puoi certamente riutilizzarli per le pagine comuni).

Se, ad esempio, nella tua app era presente una schermata che restituisce il nome, il prezzo e la descrizione di un prodotto e poi ha un campo di testo per accettare il numero di unità che un utente desiderava ordinare, il ViewModel potrebbe sembrare qualcosa di simile

public class ProductOrderTaker
{
    // these will be filled out by data calls
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }

    // these are exposed to the user for editing in the view
    public int UnitsToBePurchased { get; set; }
}

Nel tuo controller, nel caricamento iniziale di GET di questa pagina, crei una nuova istanza di questo oggetto, compili i primi 3 campi da una chiamata dati e lo associ come Modello per la Vista. La vista elencerebbe i primi 3 campi come etichette (non elementi del modulo) e avrà un campo di testo associato per il campo UnitsToBePurchased . La versione POST dell'Action nel controller accetta questa classe come parametro e, quando entra, il campo UnitsToBePurchased avrà il valore che l'utente ha compilato prima di pubblicare il modulo.

Questo è essenzialmente il succo di ciò. Il tuo modello / ViewModel ha solo proprietà per tutto ciò che viene reso dalle chiamate dati e altre proprietà per memorizzare l'input dell'utente da quella schermata. In genere non possiedono un sacco di Business Logic, ma piuttosto il tuo DAL o Business Rule lib li idraterà o li convaliderà separatamente.

    
risposta data 10.08.2016 - 21:53
fonte
2

Modello Fa riferimento a un insieme di classi che descrivono i dati con cui l'applicazione funziona. Inoltre, queste classi definiscono la logica aziendale che regola il modo in cui i dati possono essere manipolati.

    
risposta data 31.08.2016 - 12:07
fonte

Leggi altre domande sui tag