asp.net mvc 5 DropDownListFor与空的第一项始终是必需的

时间:2014-04-12 18:52:13

标签: c# asp.net-mvc-5

我有一个包含以下内容的viewmodel类:

public class PersonalDetailViewModel
{
    public int TitleOfCourtesyId { get; set; }

    [Display(Name = "Title of Courtesy")]
    public IEnumerable<SelectListItem> TitlesOfCourtesy { get; set; }

    public PersonalDetailViewModel(){

        using(var db = new MyDbContext())
        {
            TitlesOfCourtesy = db.TitleOfCourtesies.ToList().Select(i => 
                                                new SelectListItem
                                                {
                                                    Text = i.TitleOfCourtesyName,
                                                    Value = i.ID.ToString(),
                                                    Selected = i.ID == TitleOfCourtesyId
                                                });
        }            

    }
}

这很好用,并将DB中的所有值加载到TitlesOfCourtesy对象中。请注意,TitleOfCourtesyIdTitlesOfCourtesy都未标记为Required

我的视图有以下代码将此列表绑定到下拉列表:

@Html.ValidationSummary()
<div class="form-group">
    @Html.LabelFor(m => m.TitlesOfCourtesy, new { @class = "control-label col-sm-4" })

    <div class="col-sm-4">
        @Html.DropDownListFor(m => m.TitleOfCourtesyId, Model.TitlesOfCourtesy, "Select", new { @class = "form-control", autofocus = ""})
    </div>
    <div class="col-sm-4">

    </div>
</div>

但是在Submit按钮上,客户端验证会提示我The TitleOfCourtesyId field is required.。为什么?我在代码中没有将其称为Required。我错过了什么吗?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

将其更改为int?,(因为int的默认值为零)