MVC3 DropDownList没有使用[Required]类字段作为int类型进行验证?

gen*_*eek 9 asp.net asp.net-mvc asp.net-mvc-3

知道为什么以下下拉列表不会使用必填字段验证类型为int(下面的"标题"字段)?

    [Required]             // This works!
    [Display(Name = "Name")]
    public string Name { get; set; }

    [Required]             // This doesn't work 
    [Display(Name = "Title")]
    public int TitleId { get; set; }



     <div class="editor-label">
        @Html.LabelFor(model => model.Name, "Name")
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Name)
        @Html.ValidationMessageFor(model => model.Name, "This can't be blank!")
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.TitleId, "Title")
    </div>
    <div class="editor-field">
         @Html.DropDownListFor(model => model.TitleId, (SelectList)ViewBag.TitleId, String.Empty)
        @Html.ValidationMessageFor(model => model.TitleId)
    </div>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mer*_*nzo 21

根据此工作项,当ViewBag中的SelectList使用与相关字段相同的名称时,客户端验证会中断.(即两者都TitleId属于你的情况.)

试试这个:

@Html.DropDownListFor(model => 
    model.TitleId, (SelectList)ViewBag.TitleIdList, String.Empty)
Run Code Online (Sandbox Code Playgroud)

将SelectList重命名为TitleIdList相应的.