1

(I Référence this tutorial dans ce texte)Asp MVC 2: dactylographié Template Editor

Je veux utiliser les aides Html.EditorFor (ou Html.Editor).

Si un UserControl a besoin données supplémentaires il est passé par

...EditorFor(model => model.Album, new { Artists = Model.Artists, ... })

Dans le UserControl il est accessible via ViewData [stringKey], à savoir

... new SelectList(ViewData["Artists"] as IEnumerable, ...

Pour moi, ça sent un peu le poisson y comme je voudrais préfèrent un ViewModel fortement typé qui garantit que des données spécifiques sont disponibles.

Je suis maintenant un peu coincé car je ne sais pas s'il y a un "tapé" à trouver ou je devrais accepter tel quel.

Comment avez-vous résolu ce problème? Toute aide appréciée!

Lg
warappa

Répondre

0

je ne serais probablement changer mon modèle de vue afin que je ne ai pas besoin de transmettre ces informations supplémentaires. Vous pourriez faire par exemple un album a une collection d'artistes. Maintenant, tout ce tha vous aurez à faire est:

<%: Html.EditorFor(model => model.Album) %> 

Et dans votre modèle de l'éditeur: ne doit pas se préoccuper

<%: Html.DropDownListFor(x => x.SelectedArtist, new SelectList(Model.Artists)) %> 
+1

Je pense'Album' avec quelque chose comme « ce sont tous les artistes que nous connaissons? " Mais une autre question: Est-ce une mauvaise pratique de référencer directement un référentiel à partir d'un modèle d'éditeur? –

+0

@Warappa, oui c'est très mauvais de référencer un référentiel depuis une vue. La vue est là pour afficher uniquement les données transmises par le contrôleur. C'est le contrôleur qui devrait manipuler le dépôt. –

+0

OK, je vois. Si je veux le faire dactylographier dois-je faire un UserControl pas pour Type "Album" mais pour ** "AlbumEditorViewModel" ** (et serait-ce le meilleur moyen)? –