2017-06-28 4 views
-1

MVC 5を使用しているため、ドロップダウンリストを私のモデルにバインドできないようです。 DisplayNameForは正しくバインドされます。ここに私の見解があります。mvc 5 dropdownlistforデータベースから

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

モデルは、この

[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のように見えるモデルはCARRIERID、思考の定義が含まれていないことを示していますか?

答えて

0

私はちょうどあなたのコードをテストし、そのプロパティは私のVS2013プレミアムのintellisense罰金で表示されています。

あなたのVSに問題がありますか?

私は、フォームのポストをテストし、値がこれにviewbagのSelectListのを変更する場合に変更するドロップダウンから通じ来るのを見ることができます言及する価値

@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

いいえ、実行時に同じエラーが発生します。また、メモするために、これはDbSetから取得されます。したがって、ビュー上のモデルはIEnumerable –

0

だから、私は解決策を見つけました。要素が参照されていた方法でした。

   @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

です。これは解決策ではありません。あなたのモデルに関係のない 'name'属性を生成したとき、それはあなたが提出するときに決してあなたのモデルにバインドされません。 –

関連する問題