2010-08-24 3 views
0

J'ai créé un ViewModel personnalisé et l'un des champs est une liste SelectList/DropDownlist. Je voulais utiliser EditorForModel pour afficher le ViewModel. Tous les champs fonctionnent à l'exception de SelectList. J'ai essayé quelques choses différentes et rien n'a été soulevé. J'ai vu sur un post que EditorForModel n'était pas "assez intelligent" pour faire un DropDownList et je me demandais si c'était vrai. Le EditorForModel est tellement plus facile à utiliser et moins tapant :)SelectList avec MVC2 et ViewModel personnalisé

Merci!

MISE À JOUR

I figured it out. Ce que j'ai fini par faire était d'utiliser l'UIHint ("TemplateName") et dans le dossier EditorTemplates créé un fichier .ascx qui a produit était attendu.

Répondre

0

Dans votre viewmodel, vous devriez avoir une IEnumerable<SelectListItem>

public IEnumerable<SelectListItem> Months { get; set; } 

Et dans le ASPX, vous devez lier comme suit:

<% 
    var htmlAttributes = new Dictionary<string, object> { { "data-autopostback", "true" } }; 
%> 

<%:Html.DropDownList("Month", Model.Months, "-- All --", htmlAttributes)%> 

Vous devez vous assurer que vous remplissez la propriété Mois avant de le passer à la vue. Faites-moi savoir si vous avez besoin du code pour peupler la propriété Mois.

+0

Je pense que vous avez manqué mon point. Je voulais essayer et utiliser le EditorForModel(), ce qui signifie que je n'aurais pas à utiliser le Html.DropDownList. C'est ce que j'essaie de comprendre est possible. –

+0

Si vous avez IEnumerable dans le ViewModel comment allez-vous récupérer la valeur sélectionnée? cuz sur le formulaire de formulaire vous obtenez une chaîne [] avec les touches sélectionnées pour cette propriété – Omu

+0

Omu, le paramètre doit être nommé Mois dans la méthode utilisée par le contrôleur pour obtenir la valeur sélectionnée. Je ne l'ai pas testé pour les listes déroulantes multi-sélection. –

Questions connexes