Html.DropDownList La valeur sélectionnée ne fonctionne pas (à l'aide de constructeur avec IEnumberable & lt; SelectListItem & gt;
J'ai un problème lorsque la valeur sélectionnée est pas de travail pour le Html.DropDownList méthode d'assistance. Voir ci-dessous:
C'est Mon Contrôleur:
public ActionResult Edit(int id = 0)
{
NewsEvent item = GetItem(id);
ViewBag.NewsItemId = new SelectList(ViewBag.NewsItemId.Items, "Id", "Name", item.NewsItemId);
return View(item);
}
C'est mon point de Vue:
@Html.DropDownList("NewsItemId",ViewBag.NewsItemId as SelectList, string.Empty,
new { @class = "form-control" })
Cependant lorsque j'essaie de le ci-dessous en vue cela fonctionne:
@Html.DropDownList("NewsItemId", string.Empty)
Ci-dessous fonctionne aussi mais étant donné que le champ nom ne correspond pas au modèle, il ne sera pas le post correctement.
@Html.DropDownList("NewsItemIdDrop",ViewBag.NewsItemId as SelectList, string.Empty,
new { @class = "form-control" })
La raison que j'ai besoin d'utiliser la première option est de sorte que je peux ajouter l'attribut class de l'élément de contrôle.
Quelqu'un pourrait-il m'aider à comprendre ce que je fais de mal?
source d'informationauteur Paul Peat
Vous devez vous connecter pour publier un commentaire.
Vous avez le même problème ici:
Problème est dans votre ViewBag nom de la propriété. Parce que c'est le même que celui de votre propriété dans le Modèle, il ne fonctionnera pas. Vous devez juste changer le nom de votre ViewBag prop à autre chose, comme:
et sur la Vue
Je n'ai pas aimé le fait que vous pouvez utiliser
et il fonctionne. Ensuite, vous devez ajouter l'attribut 'class' et tout à coup il se casse. J'ai vu un lieu de travail et l'autre ne fonctionne pas à l'aide de la syntaxe
Quand j'ai fait des recherches, j'ai décidé de le ViewBag.NewsItemId était en fait une valeur null dans la vue. Ainsi, un travail de syntaxe, avec le Modèle et le ViewBag champs portant le même nom est
J'ai essayé beaucoup de choses mais finalement obtenu de travailler comme cela
Dans le contrôleur
Puis dans la vue que je viens de mettre (j'ai l'événement onchange et de classe pour déroulante trop ici, mais vous pouvez supprimer ceux que vous voulez).
(Désolé finlandais dans le texte, les valeurs et les noms de variables, mais ceux qui ne compte pas :D)
Tout d'abord, comment avez-vous remplir
ViewBag.NewsItemId.Items
? Nous ne voyons pas d'où viennent les valeurs de.Afin d'apporter une valeur sélectionnée de travail, il doit être du même type que les éléments de vos collections. Si
item.NewsItemId
est de typeT
ViewBag.NewsItemId.Items
doit être de typeIEnumerable<T>
(ou tout autre type de collection de la mettre en œuvre). Il ne semble pas être le cas, parce que vous définissezNewsItemId
que la valeur sélectionnée pendant que votre collection est basée surNewsItemId.Items
qui peut ne pas être du même type.Vous devez modifier le nom du domaine de votre DropDownList:
changement viewbag nom de la propriété à d'autres, puis le modèle de nom de variable utilisé sur la page.
changement de
ViewBag.NewsItemIdList
le nom a été changé. aussi changement de contrôleur.