2016-11-05 45 views
0

我有问题,我的MVC DropDownListFor。我试图从ViewBag得到这个dropdownlist的数据源如下:不能绑定数据DropDownListFor与ViewBag和SelectListItem

这是从控制器。

ViewBag.Titles = new List<SelectListItem>() { 
    new SelectListItem(){ 
      Value="1", 
      Text="Mr." 
     }, 
     new SelectListItem(){ 
      Value="2", 
      Text="Ms." 
     }, 
     new SelectListItem(){ 
      Value= "3", 
      Text= "Miss" 
     }, 
     new SelectListItem(){ 
      Value="4", 
      Text="Mrs.", 
     }, 
     new SelectListItem(){ 
      Value= "5", 
      Text= "Prof" 
}}; 

这是从编辑视图:

@Html.DropDownListFor(x => x.TitleId, new SelectList(ViewBag.Titles, "Value", "Text"), new { @class = "form-control" }) 

我试图从具有TitleId = 2,但被显示该视图时,下拉列表总是选择第一个选项(TitleId =数据库编辑一个记录1)。

如何设置此下拉列表选择的值是2?

谢谢。

+1

首先它只是'@ Html.DropDownListFor(X => x.TitleId,(IEnumerable的)ViewBag.Titles,新的{@class = “形式控制”}) ' - 从第一个创建第二个相同的'SelectList'是没有意义的。你是什​​么意思_不能绑定来自database_的TitleId?你的代码在哪里设置属性? –

+0

你从哪里得到数据库中的数据? –

+0

我有人表(它有TitleId字段)。我将有一些拥有TitleId = 2或3的人... –

回答

0

您正在使用不同的属性进行绑定,请再次检查:Model具有“TitleId”,而Dropdownlist的源选择值为“Value”。请尝试从与Model属性(TitleId)具有相同名称的不同列表中获取DropdownlistFor的源代码。可以参见下面的示例:

@Html.DropDownListFor(x => x.TitleId, new SelectList(ViewBag.Titles, "TitleId", "Text"), new { @class = "form-control" }) 
+0

'ViewBag.Titles'是typeof'List ()'和'SelectListItem'不包含名为'TitleId'的属性,并且此代码会引发异常。 –

+0

是的,我的意思是ViewBag.Title应该从其他来源设置,不应该再使用SelectListItem请再读一遍我的回答“请尝试从不同的列表中获取DropdownlistFor的源代码”,我的意思是不同的列表类型(例如:get from其他模型什么是“TitleId”属性 –

+0

什么意思_不应该使用SelectListItem_? - 当然OP应该是吧 –