Quando un modello vista viene creata è possibile popolare le opzioni (ad esempio utilizzato in un elenco a discesa) in una proprietà setter del modello di vista. Il problema è che quando quel modello di vista è in seguito passato come parametro (dal quadro!) In un metodo di azione, quei valori di proprietà non è diventato automagicamente ripopolò, quindi se avete bisogno per visualizzare di nuovo la forma a causa di errori di convalida, è necessità di ripopolare nuovamente queste opzioni.Costruttore iniezione di un'istanza di Vista modello utilizzato come metodo di azione parametro
Una soluzione potenziale, che sto chiedendo specificamente in questa domanda, è come rendere il framework MVC istanziare il modello di vista con l'iniezione del costruttore, che fornirebbe al costruttore del modello di vista un'implementazione di una sorta di oggetto di accesso ai dati (ad esempio un repository) che può essere utilizzato per recuperare le opzioni quando vengono richieste dalla vista (ad esempio nel metodo helper "DropDownListFor")?
Penso che la soluzione potrebbe avere qualcosa a che fare con le implementazioni di IModelBinderProvider o IModelBinder ma dopo aver sperimentato queste cose da frammenti di codice di esempio qua e là sulla rete, sto ancora cercando un esempio completamente funzionante, con eseguibile scaricabile codice senza alcun pezzo mancante di come mettere insieme tutte le cose.
Se siete alla ricerca di qualche discussione alternativa su come compilare un elenco di selezione, ad esempio, con "Dependecy Lookup" invece di "Dependecy iniezione" si consiglia di controllare la seguente discussione: Il modo migliore per popolare SelectList per ViewModel su GET/POST Best way to populate SelectList for ViewModel on GET/POST
Qualche giorno fa ho scritto il seguente follow-up- domanda in che discussione riguardo il "Injection Dependecy" ora sto cercando in questa discussione: https://stackoverflow.com/a/8674525/310457 (che fornisce un esempio di codice per il problema che sto cercando una soluzione di)
Ma invece di sperare che qualcuno trova quel thread vecchio con un titolo meno specifico, ho creato questa nuova domanda con un argomento più specifico su ciò che sto cercando r. E fornirò anche un collegamento da quel thread in questa nuova domanda per chiunque desideri seguire questa specifica soluzione che sto cercando.
Non capisco esattamente cosa sia ISiteConfig. Devo implementarlo? –
ISiteConfig è l'interfaccia per l'oggetto SiteConfig che si desidera iniettare automaticamente nella vista. ISiteConfig e SiteConfig si riferiscono a un oggetto di configurazione creato da te, è qualsiasi cosa tu voglia fornire alla tua vista, ed è solo per esempio. –