我有一个DropDownList,它给出了一个输出:
<select name="MyFilter">
<option value="">Choose an option</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
我想强制用户选择一个带值的选项。
我该怎么做?这样做的最佳方法是什么?我知道MVC有[Required]这样的属性,但是你没有在数据库中创建一个新行,而是你正在更新一行,所以需要在这里不能工作(我想,我对属性不太熟悉)。我需要自定义属性吗?
我有点想在这里指出正确的方向,因为到目前为止我的谷歌搜索还没有结果......
编辑:
我已添加:
[Required]
public SelectList MyFilter { get; set; }
到ViewModel,但它没有改变功能。它仍然允许表单通过。这可能是因为我在视图中添加了“选择一个选项”选项吗?
@Html.DropDownList("MyFilter", ((SelectList)Model.MyFilter), "Choose an option"
答案 0 :(得分:3)
您需要将必需属性应用于将保留所选值的属性,而不是选择列表本身:
public class ViewModel
{
public IList<SelectListItem> MyFilterValues { get; set; }
[Required]
public int MyFilter { get; set; }
}
视图中的用法:
@Html.DropDownListFor(m=>m.MyFilter, Model.MyFilterValues, "Choose an option")
@Html.ValidationMessageFor(m => m.MyFilter)