Quando si sviluppa un'applicazione ASP.NET MVC che consente l'aggiornamento del modello, è necessario un modo per sapere come acquisire il modello di visualizzazione aggiornato e abbinarlo al modello che è ora aggiornato. Sembra che ci siano diversi modi per farlo e mi chiedo se qualcuno di questi non sia un MVC corretto (proprio come avere il controller che memorizza i dati che dovrebbero essere nel modello non è un MVC corretto)?
Tutti i modelli di visualizzazione hanno un ID: Pro
- Assicurati sempre di poter abbinare il tuo modello.
Contro
- Devi stare molto attento che nessuno degli ID sia stato cambiato altrimenti puoi avere utenti che aggiornano le righe a cui non dovrebbero avere accesso.
Solo i modelli di vista minima nuda hanno un ID: Pro
- Molto meno controllo necessario per evitare che gli utenti aggiornino i dati a cui non dovrebbero accedere.
Contro
- Molto più difficile tenere traccia di quale modello di visualizzazione corrisponde a quale modello.
- Devi ancora controllare i pochi modelli di visualizzazione con ID per assicurarti che l'utente non stia aggiornando i dati a cui non dovrebbe avere accesso.
Nessun modello di visualizzazione ha un ID:
Professionisti
- Non è necessario controllare gli ID per gli aggiornamenti.
Contro
- Devi abbandonare l'apolidia.
Quindi ho due domande.
Innanzitutto, esiste una scelta corretta / errata? (In caso contrario, ciò significa che la scelta è una questione di opinione e la mia seconda domanda si basa sull'opinione e dovrebbe essere ignorata.)
Secondo, se esiste una scelta corretta / errata, quale è?
Per chiarire un commento, sto parlando quando hai un modello di visualizzazione che è un imitazione dell'oggetto del tuo database.
Pensa questo:
public class InvoiceViewModel //Does not have ID, does not relate to model.
{
public CustomerViewModel CustomerVM { get; set; } //Maybe has ID? Does relate to model.
public AddressViewModel BillingAddressVM { get; set; } //Ditto
public AddressViewModel ShippingAddressVM { get; set; } //Ditto
public List<InvoiceLineItemViewModel> ItemVMs { get; set; } //Each one has an ID?
}
non questo:
public class InvoiceViewModel
{
public Customer Customer { get; set; }
public Address BillingAddress { get; set; }
public Address ShippingAddress { get; set; }
public List<InvoiceLineItem> Items { get; set; }
}
You have to abandon statelessness.
- Hai appena fatto la scelta di utilizzare MVC senza senso.