Passaggio dei dati del modello ad asp.net mvc EditorTemplates
-
21-09-2019 - |
Domanda
ScottGu in questo post testo del collegamento mostra come è possibile utilizzare EditorTemplates per cose come un Country DropDownList.La mia domanda è: come si può passare un elenco dinamico di Paesi all'EditorTemplate?
Soluzione
È possibile passare in Viewdata e mangimi Viewdata da e ActionFilter se i dati è richiesto molto spesso (anche se discutibile è un anti-modello ).
Altri suggerimenti
Ancora meglio a fare la vista parziale fortemente tipizzato e passare il modello per l'helper EditorFor
@Html.EditorFor(m=>m.SelectedCountry, Model.AvailableCountries)
Probabilmente la soluzione più elegante è utilizzare un attributo personalizzato, potrai successivamente accedere ai metadati del modello utilizzando:ViewData.ModelMetadata.
per esempio:
[Foreign(Type="DropDown", TableName="Countries")]
public int IdCountry { get; set; }
dove ForeignAttribute è una classe che devi dichiarare e successivamente utilizzarla per creare il modello dell'editor.
Simile alla risposta di @Benja
Puoi anche utilizzare l'attributo [AdditionaMetaData(key,value)] in modo simile senza dover definire il tuo attributo.Chiave e valore devono essere stringhe.
I dati aggiuntivi possono essere recuperati nella vista con:@ViewData.ModelMetadata.AdditionalValues["DropDownData"]