2010-04-23 6 views
0

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 ...

Répondre

0

Avez-vous inclus Html.BeginForm ou Ajax.BeginForm dans votre balisage? C'est un oubli commun qui peut causer le comportement dont vous parlez. Je ne peux pas dire à partir du code que vous avez collé dans votre question.Cheers.

+0

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

Questions connexes