【发布时间】:2015-02-13 20:10:52
【问题描述】:
我在页面上有很多 DropDownLists
class BigViewModel
{
public List<SmallViewModel> SmallVM {get;set;}
public List<SelectListItem> Items {get;set;}
//some other properties
}
class SmallViewModel
{
public string ItemId {get;set;}
//some other properties
}
<table>
@for( var i = 0;i<Model.SmallVM.Count();i++)
{
<tr>
<td>
@Html.DropdownListFor(m=> m.SmallVM.ItemId, Model.Items)
</td>
</tr>
}
//display other properties
</table>
在控制器中
bigViewModel.Items = List<SelectListItem>
{
new SelectListItem{Value = "1", Text = "aaa"},
new SelectListItem{Value = "2", Text = "bbb"},
new SelectListItem{Value = "3", Text = "ccc"},
}
bigViewModel.SmallVM = new List<SmallViewModel>
{
new SmallViewModel{ItemId = 3},
new SmallViewModel{ItemId = 2},
}
在控制器中,我为每个 SmallVM 设置了不同的 ItemId,每个 DropDownList 使用相同的 Items 集合。我想为每个 DropDownList 从 SmallViewModel 设置默认值。例如在这种情况下,有两个 DropDownLists 首先应该显示默认文本“ccc”,第二个应该显示默认文本“bbb”。
我应该为每个 SmallViewModel 设置不同的 List<SelectedListItem> 并将它们设置为 Selected 属性还是有其他方法?
【问题讨论】:
-
您要么对代码进行了过多的修改,要么发布的内容不足以回答这个问题。唯一存在的
Items属性是List<SelectListItem>,它应该是您传递给Html.DropDownListFor的second 参数。相反,您使用的是Model.Members,这里甚至没有定义它。此外,Items中的各个项目属于SelectListItem类型,它没有ItemId属性。 -
是的,当然是
Model.Items -
这并没有真正添加任何东西。发布您的视图的实际模型定义以及
BigViewModel和SmallViewModel类(或至少每个 属性上涉及的任何这些属性,即Members)。跨度> -
哦,我明白了。您也更新了问题中的代码。
Model.Items代替Model.Members。这解决了一个问题,但选择列表不能既是您用来生成下拉列表的东西,又是您回发到的属性,即使那样,项目仍然没有@ 987654339@ 属性,所以我什至不确定你是如何让它运行的。
标签: c# asp.net-mvc