1

我正在使用 Entity Framework 4.1 构建一个 ASP.Net MVC 3 Web 应用程序。在我的一个接受 ViewModel 的视图中执行验证。我正在使用我放置在我希望验证的属性上的数据注释。

视图模型

public class ViewModelShiftDate
{
    public int shiftDateID { get; set; }

    public int shiftID { get; set; }

    [DisplayName("Start Date")]
    [Required(ErrorMessage = "Please select a Shift Start Date/ Time")]
    public DateTime? shiftStartDate { get; set; }

    [DisplayName("Assigned Locum")]
    public int assignedLocumID { get; set; }

    public SelectList AssignedLocum { get; set; }

}

看法

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

    <br />
    <div class="editor-label">
        @Html.LabelFor(model => model.shiftStartDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.shiftStartDate, new { @readonly = "readonly" })
        @Html.ValidationMessageFor(model => model.shiftStartDate)
    </div>
    <br />

    <div class="editor-label">
        @Html.LabelFor(model => model.assignedLocumID)
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(model => model.assignedLocumID, Model.AssignedLocum)
        @Html.ValidationMessageFor(model => model.assignedLocumID)
    </div>
    <br />

    <p>
        <input type="submit" value="Save" />
    </p>
    <br />
}

SelectList ' AssignedLocum ' 被传递到我的 DropDownList 视图中,并且选定的项目被分配给属性 ' assignedLocumID '。

正如您从我的 ViewModel 中看到的那样,唯一的必填字段是“ shiftStartDate ”,但是,当我在视图中点击“提交”按钮时,下拉列表“ AssignedLocum ”也作为必填字段并且不允许用户提交,直到选择了一个值。

有谁知道为什么这个属性是必填字段,即使我没有标记它是这样的?

谢谢。

4

1 回答 1

-2

尝试使用下拉菜单的默认值(例如“请选择”)

@Html.DropDownListFor(model => model.assignedLocumID, Model.AssignedLocum, "Please select")
于 2012-04-25T08:37:10.077 回答