如何强制选择DropDownList值?

时间:2015-11-13 09:59:55

标签: c# asp.net-mvc

我有一个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"

1 个答案:

答案 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)