2011-04-17 107 views
1

我经常发现自己包括视图模型中的选项列表,每个选项都是原始选项的视图模型本身,并添加了Selected属性。然后,当在一个动作中处理发布的视图模型时,我需要遍历选项列表来查找选定的项目。有没有更干净的方式来做这件事,或者这个星期天下午我的闲暇时间是什么?从视图模型中的列表中提取选定项目

+0

您能否请您展示您的代码,因为我不太了解您描述中的问题? – 2011-04-17 14:02:38

+0

即使您使用JQuery传递所选选项的数量,您仍然必须进行迭代..如果您有多选列表,我不认为有办法避免它。 – sajoshi 2011-04-18 07:22:54

回答

1

一种选择是在视图模型上使用选定值和相关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参数,你不需要担心手工设置了所选择的价值 - 它会为你做它时,它呈现下拉名单。

相关问题