2010-06-04 9 views
0

J'essaie de faire une vue dans ASP.NEt mvc 2 avec une liste de sélection.comment puis-je récupérer ma liste sélectionnée avec l'élément sélectionné (asp.net mvc 2)

je remplis les langues SelectList de mon modèle (regDom)

listLangModel est une liste des langues que j'extraire de la base de données.

regDom.Languages ​​= de l dans listLangModel

   select new SelectListItem 
        { 
         Text = l.Name, 
         Value = l.ID 
        }; 

À mon avis, j'ai cette

 <div class="editor-label"> 
      <%: Html.LabelFor(model =>> model.Languages) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.DropDownListFor(model => model.Languages, Model.Languages) %> 
      <%: Html.ValidationMessageFor(model => model.Languages) %> 
     </div> 

Quand je cours, les langues sont dans le dropdownlist sur ma page. Mais lorsque je le reporte sur mon serveur, le modèle ne contient plus les langues. Et je ne peux pas vérifier quelle langue est sélectionnée sur la page.

Répondre

1

L'utilisateur ne peut sélectionner qu'une seule langue dans la liste déroulante. Vous ne pouvez donc pas attendre qu'il remplisse la propriété Languages de votre modèle, qui est une collection.

Ajouter une propriété pour conserver la langue sélectionnée dans votre modèle:

public string SelectedLanguage { get; set; } 

et lier ensuite la liste déroulante à cette propriété:

<%: Html.DropDownListFor(model => model.SelectedLanguage, Model.Languages) %> 
+0

Merci, maintenant je peux voir quelle langue est choisi. Mais puis-je transmettre mes langues? Dans le cas où il y a des entrées qui ne sont pas valides (à cause des règles métier), je peux rendre mon formulaire avec toutes les langues? – Masna

+0

Oui, vous passez le modèle à la vue ('return View (model)') qui a la propriété 'Languages' contenant toutes les langues vous permettant de relier la liste déroulante. –

+0

Merci pour la réponse rapide. Mais j'obtiens cette erreur maintenant: L'élément ViewData qui a la clé 'SelectedLanguage' est de type 'System.String' mais doit être de type 'IEnumerable '. Et quand je débogue, ma variable de langues de mon objet est vide quand elle revient . – Masna