Passer des données de modèle à asp.net mvc EditorTemplates
-
21-09-2019 - |
Question
ScottGu dans ce post texte du lien montre comment utiliser EditorTemplates pour des choses telles qu'une Country DropDownList.Ma question est de savoir comment transmettre une liste dynamique de pays au EditorTemplate ?
La solution
Vous pouvez passer dans anti-modèle ).
Autres conseils
Mieux encore vous faites la vue partielle fortement typé et passez le modèle à l'aide EditorFor
@Html.EditorFor(m=>m.SelectedCountry, Model.AvailableCountries)
La solution la plus élégante consiste probablement à utiliser un attribut personnalisé. Vous pourrez accéder ultérieurement aux métadonnées du modèle en utilisant :ViewData.ModelMetadata.
par exemple:
[Foreign(Type="DropDown", TableName="Countries")]
public int IdCountry { get; set; }
où ForeignAttribute est une classe que vous devez déclarer, puis l'utiliser pour créer votre modèle d'éditeur.
Semblable à la réponse de @Benja
Vous pouvez également utiliser l'attribut [AdditionaMetaData(key,value)] de la même manière sans avoir à définir votre propre attribut.La clé et la valeur doivent être des chaînes.
Les données supplémentaires peuvent être récupérées dans la vue avec :@ViewData.ModelMetadata.AdditionalValues["DropDownData"]