2017-06-28 2 views
-1

Travailler avec MVC 5 et ne peut pas sembler lier le dropdownlistfor à mon modèle. Le DisplayNameFor se lie correctement. Voici mon point de vue.5 mvc dropdownlistfor base de données

<div class="row"> 
    <h2>@ViewBag.Title</h2> 
    <hr /> 
    <div class="col-lg-12" id="div1"> 
     <form class="form-horizontal" role="form" method="post" action="@Url.Action("GetKeys", "Encryption")"> 
      <div class="form-group"> 
       @Html.DisplayNameFor(model => model.CarrierID) 
       <div class="col-sm-9"> 
        @Html.DropDownListFor(model => model.CarrierID, new SelectList(ViewBag.Carriers, "id", "Name"), "----Select a Carrier----") 
        @Html.ValidationMessageFor(model => model.CarrierID) 
       </div> 
      </div> 
     </form> 
    </div> 
</div> 

modèle ressemble à ce

[Key] 
     public System.Guid EncryptionID { get; set; } 

     [Required] 
     [Display(Name = "Carrier Name:")] 
     public string CarrierID { get; set; } 
     public IEnumerable<SelectListItem> CarrierNames { get; set; } 

     [Required] 
     [Display(Name = "Text to Encrypt:")] 
     public string txtText { get; set; } 

     public string Thumbprint { get; set; } 

intelisense montre que le modèle ne contient pas de définition pour CarrierID, pensées?

Répondre

0

Je viens de tester votre code et que la propriété est bien visible dans les résultats IntelliSense pour moi prime VS2013.

Peut-être que son problème avec votre VS?

Il convient de mentionner la forme que je teste après et peut voir la valeur à venir à travers dans le menu déroulant changer lors d'un changement de SelectList ViewBag à ceci:

@Html.DropDownListFor(model => model.CarrierID, MyModel.MySelectListItems()) 


    public static IList<SelectListItem> MySelectListItems() 
    { 
     return new List<SelectListItem>{ 
      new SelectListItem {Text = "option1", Value = "1"}, 
      new SelectListItem{Text = "option2", Value = "2"} 
     }; 
    } 
+0

Non, j'obtiens la même erreur lors de l'exécution. Aussi, pour noter, ceci est tiré d'un DbSet. Donc, le modèle sur la vue est un IEnumerable –

0

Alors, j'ai trouvé la solution. C'était la façon dont les éléments étaient référencés.

   @Html.DropDownListFor(model => model.ElementAt<Professional_Services_Tools.Models.t_ConfigBasedEncryption>(0).CarrierID, new SelectList(ViewBag.Carriers, "Value", "Text"), "----Select a Carrier----") 
       @Html.ValidationMessageFor(model => model.ElementAt<Professional_Services_Tools.Models.t_ConfigBasedEncryption>(0).CarrierID) 
+0

Ce n'est pas une solution. Il ne liera jamais à votre modèle lorsque vous soumettez - générant un attribut 'name' qui n'a pas de relation avec votre modèle. –