Je sais qu'il y avait quelques questions similaires ici à propos de DropDownListFor, mais aucune m'a aidé ...Comment extraire la valeur de l'aide HTML DropDownListFor dans ASP.NET MVC2?
J'utilise Entity Framework comme ORM dans mon projet. Il y a le modèle EF appelé "Stete". Stete a Foreign sur le modèle EF appelé "Drustva"
Maintenant j'essaye de faire un formulaire pour éditer les données, pour le modèle Stete. J'ai réussi à tout afficher, y compris la propriété Stete.Drustva.Naziv, mais je ne peux pas obtenir cette dernière propriété dans ma méthode de gestionnaire [HttpPost]. Il retourne toujours 0, peu importe ce que je sélectionne dans la liste déroulante.
Voici le code:
DrustvaController:
public static IEnumerable<SelectListItem> DrustvaToSelectListItemsById(this KnjigaStetnikaEntities pEntities, int Id)
{
IEnumerable<Drustva> drustva = (from d in pEntities.Drustva
select d).ToList();
return drustva.OrderBy(drustvo => drustvo.Naziv).Select(drustvo => new SelectListItem
{
Text = drustvo.Naziv,
Value = drustvo.Id.ToString(),
Selected = (drustvo.Id == Id)? true : false
});
}
SteteController:
private IEnumerable<SelectListItem> privremenaListaDrustava(int Id)
{
using (var ctx = new KnjigaStetnikaEntities())
{
return ctx.DrustvaToSelectListItemsById(Id);
}
}
public ActionResult IzmijeniPodatkeStete(Int32 pBrojStete)
{
PretragaStetaModel psm = new PretragaStetaModel();
ViewData["drustva"] = privremenaListaDrustava(psm.VratiStetuPoBrojuStete(pBrojStete).Drustva.Id);
ViewData.Model = new Models.Stete();
return View("EditView", (Stete.Models.Stete)psm.GetSteta(pBrojStete));
}
EditView:
<div class="editor-label">
<%: Html.Label("Društvo") %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(m => m.Drustva.Naziv, ViewData["drustva"] as IEnumerable<SelectListItem>) %>
<%: Html.ValidationMessageFor(model => model.FKDrustvo) %>
</div>
Je suis désolé de ne pas traduire les noms des objets int o anglais, mais ils ont à peine une traduction appropriée. Si nécessaire, je peux essayer de créer un exemple similaire ...
Oui, je l'ai "<% à l'aide (Html.BeginForm()) {%> <%: Html.ValidationSummary (true)%>" Maintenant, il est BeginForm non précisée, mais j'ai essayé aussi spécifier l'action et nom du contrôleur (malheureusement sans succès) – Eedoh