2017-05-10 2 views
0

J'ai un DropDownListFor est comme ceci ci-dessousla baisse downListFor afficher la valeur sélectionnée dans asp.net mvc

@Html.DropDownListFor(m => m._dayOfWeek, new SelectList(Model._dayOfWeekList, "Value", "Text")) 

in Model 

_dayOfWeek is string 
_dayOfWeekList is List<selectlistItem> 

maintenant dayOfWeekList est créé dans le contrôleur se et il peut avoir plusieurs valeurs, mais sept valeurs max

Valeur - 0 texte - lundi

Valeur - 1 texte - mardi

Valeur - 2 texte - mercredi

et ainsi de suite ...

maintenant dans la chaîne _dayOfWeek i peut attribuer une valeur ou d'un texte - en fonction de la valeur dans _dayOfWeek --- le menu déroulant devrait être en mesure de montrer que l'option

lorsque la page est chargé déroulant montre toujours le lundi par défaut.

comment faire la chute vers le bas montrent cette option qui est là dans _dayOfWeek chaîne

+0

Question: propriété _dayOfWeek (ou variable) dans votre modèle est un int? (ou quelque chose qui peut contenir 0, 1 .. ou 6. –

+0

Quel est le type de données pour 'Value' dans le' _dayOfWeekList'? – degant

+0

toutes les choses sont la propriété et tous sont des chaînes – tripathy

Répondre

0

Tout d'abord, ne pas créer une nouvelle SelectList. Razor peut gérer cela lui-même, et il vaut mieux le laisser faire. Tous DropDownListFor EXIGE IEnumerable<SelectListItem>, que vous avez déjà:

@Html.DropDownListFor(m => m._dayOfWeek, Model._dayOfWeekList) 

En second lieu, la valeur attribuée est déterminée en fonction ModelState, qui est composé de valeurs de Request, ViewData/ViewBag et, en dernier recours, Model. Par conséquent, vous devez vous assurer que le modèle de votre vue a la valeur appropriée définie pour cette propriété et qu'elle s'aligne avec les valeurs d'option possibles dans votre List<SelectListItem>. Ensuite, assurez-vous que vous n'avez aucun conflit d'accepter un paramètre comme _dayOfWeek à votre méthode d'action ou quelque chose comme ViewBag._dayOfWeek être mis à une certaine valeur. Dans les deux cas, le boîtier n'a pas d'importance, donc _dayOfWeek == _DayOfWeek == _DAYOFWEEK.

+0

Son ne fonctionne pas - Je fais la bonne Item Selected = true dans le DropDowList et en vue de son affichage pendant le débogage je peux voir l'élément hold porperty Seleted true - quand il est chargé son chargement par défaut lundi chargé – tripathy

+0

La propriété 'Selected' de' SelectListItem' est complètement ignorée par Razor. Encore une fois, Razor définit la valeur en fonction de ce qui est dans 'ModelState', indépendamment de vos paramètres manuels' Selected' Si la bonne valeur n'est pas sélectionnée, alors il y a un problème avec la valeur dans 'ModelState', qui est ce que vous ' Il faudra regarder et déterminer * pourquoi * c'est incorrect là-bas. –

0

Ok, j'ai la réponse à ça. sans utiliser ViewBag ou vidéotex

 foreach (var item in model._dayOfWeekList) 
     { 
      if (item.Text == model._dayOfWeek) 
     { 
       item.Selected = true; 
      } 

     } 

thnaks à d'autres aussi pour leur temps