Ouais, je sais, cette question a été posée/répondu 34798796873.5 fois. J'ai regardé à travers les 3 bajillion d'entre eux, et j'ai toujours le problème. Qu'est-ce que j'oublie ici?DropDownListPour la sélection ne fonctionne pas - encore
J'ai essayé plusieurs approches et aucune d'entre elles ne fonctionne. Voici mes dernières tentatives:
<%:Html.DropDownList("Author",
Model.AuthorItems.Select(i =>
new SelectListItem
{
Text = i.Name,
Value = i.Id.ToString(),
Selected = i.Id == Model.Author.Id
}), "無し")%>
<%:Html.DropDownListFor(m => m.Author,
new SelectList(Model.AuthorItems,
"Id",
"Name",
Model.Author),
"無し") %>
Mon modèle de vue est très simple:
public class EditArticleViewModel
{
public AuthorItem Author { get; set; }
public IList<AuthorItem> AuthorItems { get; set; }
public class AuthorItem
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Je me suis assuré mon action fonctionne correctement; En effet, Auteur a un Id de 5, et AuthorItems a une entrée dont l'Id est 5.
J'ai même essayé de surcharger Equals et GetHashCode dans le modèle.
Blahhhhh !! 1
Eh bien c'était rapide. Aucune idée pourquoi cela fonctionne et aucune des autres approches, mais merci! –
Quelles autres approches? Vous ne pouvez pas lier une liste déroulante à un objet complexe (Auteur dans votre cas), ce que vous essayiez de faire. Si vous souhaitez récupérer l'auteur correspondant dans votre action POST, utilisez l'ID fourni pour le récupérer dans la base de données. –