2016-03-03 26 views
-1

我试图使用模型中相应的值设置选择列表的默认值。假设我的模型包含两个字段,ID和一个Type。我有一个TypeList,其中包含一个类型作为值,并且类型&说明作为文本。访问和设置在视图中选择列表MVC

我的视图将迭代通过模型为每个对象显示在表中,对于“类型”列,我希望能够显示TypeList下拉菜单。大多数对象都有一个当前分配的类型,所以我希望能够设置TypeList来将该特定类型显示为默认类型。

这是我到目前为止。对于我的模型:

public class MyModel 
{ 
    public string ID; 
    public string type; 
} 

在我看来:

List<SelectListItem> typeList = ViewBag.TypeList ?? new List<SelectListItem>(); 
... 
foreach (MyModel item in Model) 
{ 
    <td> 
     @Html.DropDownListFor(m=>m.Where(n=>n.ID == item.ID).FirstOrDefault().type, typeList) 
    </td> 
} 

我相信有什么毛病我建立的下拉列表的方式。任何帮助/建议将不胜感激。谢谢!

+0

我猜你没打算检查当你在接受的答案中使用代码时会发生什么(当你提交表单时它不会绑定到你的模型!)。请参阅[这个答案](http://stackoverflow.com/questions/31174250/how-to-set-default-value-to-select-list-in-mvc-during-run-time/31174308#31174308)了解如何正确地做到这一点。并理解为什么你不能使用'foreach'循环,请参考[这个答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943) –

+0

@StephenMuecke感谢您的建议。我意识到答案并不完美,但这是我需要的暗示和开始,我能够自己找出其他问题。 – JoeFromAccounting

+0

因此,它应该是up-vote(因为它的帮助),不被接受(这表明其他人认为答案的作品 - 实际上它不) –

回答

1
foreach (MyModel item in Model) 
{ 
    <td> 
     @Html.DropDownList("myList", typeList, item.type) 
    </td> 
} 
+0

谢谢!很简单。 – JoeFromAccounting

相关问题