1
我经常发现自己包括视图模型中的选项列表,每个选项都是原始选项的视图模型本身,并添加了Selected
属性。然后,当在一个动作中处理发布的视图模型时,我需要遍历选项列表来查找选定的项目。有没有更干净的方式来做这件事,或者这个星期天下午我的闲暇时间是什么?从视图模型中的列表中提取选定项目
我经常发现自己包括视图模型中的选项列表,每个选项都是原始选项的视图模型本身,并添加了Selected
属性。然后,当在一个动作中处理发布的视图模型时,我需要遍历选项列表来查找选定的项目。有没有更干净的方式来做这件事,或者这个星期天下午我的闲暇时间是什么?从视图模型中的列表中提取选定项目
一种选择是在视图模型上使用选定值和相关SelectList的组合。
举例来说,如果你有需要分配一个类别的产品,您可能有类似于这样的视图模型:
public class ProductViewModel
{
public int SelectedCategoryId { get; set; }
public IEnumerable<CategoryViewModel> AllCategories { get; set; }
public SelectList CategorySelectList
{
get
{
return new SelectList(this.AllCategories, "Id", "Name", this.SelectedCategoryId);
}
}
//Other properties
}
public class CategoryViewModel
{
public int Id { get; set; }
public string Name { get; set; }
//Other properties
}
并在您查看HTML输入助手,看起来像这样的:
@Html.DropDownListFor(mod => mod.SelectedCategoryId, Model.CategorySelectList, "---")
因为在ProductViewModel的CategorySelectList属性给出SelectedCategoryId作为了selectedValue参数,你不需要担心手工设置了所选择的价值 - 它会为你做它时,它呈现下拉名单。
您能否请您展示您的代码,因为我不太了解您描述中的问题? – 2011-04-17 14:02:38
即使您使用JQuery传递所选选项的数量,您仍然必须进行迭代..如果您有多选列表,我不认为有办法避免它。 – sajoshi 2011-04-18 07:22:54