我常常发现自己在视图模型中包含了一个选项列表,每个选项都是原始选项的视图模型,并添加了Selected
属性。然后,当在动作中处理发布的视图模型时,我需要遍历选项列表以找到所选择的项目。有没有比这更简洁的方法,或者这是我周日下午的业余时间用于什么?
答案 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参数,所以您不必担心手动设置所选值 - 它将在呈现下拉列表时为您执行此操作。