Con MVC3, dovrei progettare i miei modelli di vista in modo tale che ce ne sia uno che è associato alla vista (DisplayModel) e uno che viene posticipato al controller (EditModel)?In MVC3, dovrei avere modelli "edit" separati rispetto ai modelli "display"?
Per chiarire, non sto chiedendo modelli di dati e modelli di vista - So che non è bello legare le mie viste/controller a modelli di dati/dominio.
Né sto chiedendo di condividere un modello attraverso due viste separate, una vista che viene utilizzata per la visualizzazione dei dati e un'altra vista che viene utilizzata per modificare i dati.
Piuttosto, sto chiedendo una vista che viene utilizzata per modificare i dati e il modello che è associato alla vista rispetto al modello associato all'azione del controller.
In altre parole, se questo è il mio punto di vista:
@model MyApp.Models.CustomerModel
avvisare il controller di azione simile a:
public ActionResult Index(CustomerModel model)
Oppure:
public ActionResult Index(CustomerEditModel model)
A un certo punto, siamo stati facendo il secondo (separato). Ma ultimamente, abbiamo iniziato a fare il primo (condiviso).
La ragione di questo cambiamento è stato perché:
Con MVC3 convalida discreto, se sto usando DataAnnotations sul mio modello per la validazione, questo è necessario in entrambi i modelli, se sono separati (sul display modello per mappare la convalida lato client e sul modello di modifica per la convalida lato server).
Come la nostra applicazione maturata, ci siamo resi conto che i nostri modelli di visualizzazione e modifica erano identiche al 95%, con l'eccezione delle liste di selezione che erano nei nostri modelli vista. Ora li abbiamo spostati su uno shared class e li stiamo passando attraverso la vista ora.
ma ho visto alcune altre discussioni che puntano ad avere modelli condivisi per la vista/regolatore di essere una cattiva idea, e che it violates separazione degli interessi.
Qualcuno può aiutarmi a capire i compromessi per questi due approcci?
ottima domanda, e qualcosa che ho faticato con me stesso. Ho casi di entrambi nell'ultima app principale che ho sviluppato. Quando si allontanano molto distanti, ne faccio uno separato, ma nella maggior parte dei casi sono uguali. – Patricia