2015-05-18 101 views
1

从数据库中获取和粘性的选项的数据我打算被默认选择:故障设置强类型MVC的SelectList的设定值

public List<Forester> GetForesters() 
    { 
     var data = _db.tblForester.ToList(); 

     List<Forester> ForesterList = new List<Forester>(); 

     foreach (var item in data) 
     { 
      Person person = new Person() 
      { 
       Key_ = item.Key_, 
       FirstName = item.FirstName, 
       LastName = item.LastName, 
       District = item.District, 
       County = item.County 
      }; 
      PersonList.Add(person); 
     } 
     PersonList.Add(new Person { Key_ = -1, FirstName = "- Select ", LastName = "Person -" }); 
     return PersonList; 
    } 

模型有两个属性:

public int SelectedPersonId { get; set; } 
    public IEnumerable<SelectListItem> PersonList { get; set; } 

控制器从数据库中获取列表并生成一个选择列表:

 vm.SelectedPersonId = -1; 
     vm.PersonList = new SelectList(repo.GetPeople(), "Key_", "PersonsName", vm.SelectedpersonId); 

我试了几个方式的观点:

   @Html.DropDownListFor(m => m.Key_, new SelectList(Model.PersonList, "Value", "Text", -1), new { @class = "form-control ddl" }) 

下拉的伟大工程,除了所选择的值是只是第一个就行了,不是我指定。

下面是HTML的呈现方式:

<form action="/Forester/Activity" method="post"><select class="form-control ddl" data-val="true" data-val-number="The field Key_ must be a number." data-val-required="The Key_ field is required." id="Key_" name="Key_"><option value="1">DIANE PARTRIDGE</option> 
<option value="2">GARY GROTH</option> 

...

我加了一个在底部:

<option value="-1">- Select Forester -</option> 

回答

1

,如果你有以下的模型

public int SelectedPersonId { get; set; } 
public IEnumerable<SelectListItem> PersonList { get; set; } 

you sho ULD使用

@Html.DropDownListFor(m => m.SelectedPersonId , Model.PersonList, new { @class = "form-control ddl" }) 

DropDownListFor助手将评估SelectedPersonId,它会尽量选择它

+1

而且,当你设置'vm.PersonList'不应该构建一个'SelectList'行。只要执行'repo.GetPeople()。Select(m => new SelectListItem {...})'来构造你的IEnumerable '。 –

+0

@ChrisPratt好点! –

+0

谢谢你们,现在工作。至于控制器系列,有什么区别? – BattlFrog

1

如果您使用以下,最后一个参数指定的初始文本(选项标签),这样你就不会需要使用虚值-1:

Html.DropDownListFor(m => m.SelectedPersonId, 
      Model.PersonList as List<SelectListItem>, "Select Forester -"}) 

SelectExtensions