MVC DropDownListPour ne pas sélectionner de valeur dans le modèle
J'ai lu attentivement cette question ASP.NET MVC DropDownListFor pas la sélection de la valeur de modèle et de la réponse, mais je ne connais pas la solution à mon problème.
C'est mon point de vue:
@foreach (var adjusterLanguages in Model.adjusterLanguages)
{
<div class="editor-field row">
@Html.DropDownListFor(model => Model.adjusterLanguages[i].languageID,
(SelectList)ViewBag.ForeignLanguages)
@Html.ValidationMessageFor(model =>Model.adjusterLanguages[i].languageID)
</div>
<div style="clear: left;"></div>
i++;
}
Je peux confirmer que le modèle de données est remplie (à partir de mon contrôleur):
model.adjusterLanguages = adjLangs;
Alors, comment puis-je faire, sélectionnez les éléments lorsque le modèle est envoyée à la vue?
Le code html généré est comme suit:
<div class="editor-field row">
<select id="adjusterLanguages_0__languageID" name="adjusterLanguages[0].languageID"><option value="">--Select--
</option>
<option value="94c5be88-814e-4719-9784-587eb88aa975">Afrikanns</option>
<option value="37b7bf71-7f4e-47c2-8b81-652b0d63dbcb">Albanian</option>
<option value="c94d6d85-0ba2-47d7-932e-2a61feba37b3">Arabic</option>
<!-- ... truncated for brevity ... -->
</select>
<span class="field-validation-valid" data-valmsg-for="adjusterLanguages[0].languageID" data-valmsg-replace="true"></span>
</div>
<div style="clear: left;"></div>
<div class="editor-field row">
<select id="adjusterLanguages_1__languageID" name="adjusterLanguages[1].languageID">
<option value="">--Select--</option>
<option value="94c5be88-814e-4719-9784-587eb88aa975">Afrikanns</option>
<option value="37b7bf71-7f4e-47c2-8b81-652b0d63dbcb">Albanian</option>
<option value="c94d6d85-0ba2-47d7-932e-2a61feba37b3">Arabic</option>
<!-- ... truncated for brevity ... -->
</select>
<span class="field-validation-valid" data-valmsg-for="adjusterLanguages[1].languageID" data-valmsg-replace="true"></span>
</div>
source d'informationauteur user1477388
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse! Merci à tous pour votre aide. Quand j'ai modifier mon code pour la suite, il fonctionne. Le code spécifie simplement la valeur sélectionnée:
Lorsque vous êtes remplissage
ViewBag.ForeignLanguages
dans le contrôleur, l'élément qui doit être sélectionné, définissez la.Selected
true à la propriété.Cependant, vous aurez un problème avec ce parce que vous avez beaucoup d'éléments à l'aide de la même
ForeignLangauges
liste d'éléments.Vous aurez besoin de créer une liste pour chaque
adjusterLanguages
dans votre liste. Ils ne peuvent pas partager la même liste, caradjusterLanguages[0]
a besoin d'un autre élément sélectionné queadjusterLanaguages[1]
Edit:
J'aime ce modèle:
Dans le contrôleur, vous remplissez votre liste avec un ID et c'est propre liste des langues disponibles.
De votre point de vue:
De sorte que chaque
DropDownListFor
get sa propre liste de langues.À mon avis un élément de la
ViewBag.ForeignLanguages
devrait avoirSelected
propriété définie àtrue
. DropDownListFor méthode de sélection de l'élément basé sur ModelState. Ici vous avez le code source de DropDownListFor méthode il y a quelque chose comme:Et si cette valeur est null, la valeur sélectionnée est extrait de
Selected
propriétéJe sais que c'est une vieille question, mais juste au cas où quelqu'un est confronté au même problème que moi. Dans mon cas était que par accident, j'ai été en utilisant une variable normale au lieu d'une propriété dans le modèle, dès que je l'ai mis comme une propriété au lieu de cela, il a commencé à travailler.
J'ai ajouté une extension de la méthode à appliquer la sélection de valeur. Elle préserve également l'état d'affichage des données sur un rechargement de la page.
D'Usage:
Je suis l'envoi de IEnumerable dans SList au lieu de ViewBag