从视图模型中的列表中提取所选项

时间:2011-04-17 10:53:10

标签: asp.net asp.net-mvc

我常常发现自己在视图模型中包含了一个选项列表,每个选项都是原始选项的视图模型,并添加了Selected属性。然后,当在动作中处理发布的视图模型时,我需要遍历选项列表以找到所选择的项目。有没有比这更简洁的方法,或者这是我周日下午的业余时间用于什么?

1 个答案:

答案 0 :(得分: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参数,所以您不必担心手动设置所选值 - 它将在呈现下拉列表时为您执行此操作。