【问题标题】:ASP.Net MVC 3 Data AnnotationASP.Net MVC 3 数据注释
【发布时间】:2012-04-25 08:30:20
【问题描述】:

我正在使用 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' 也是必填字段,在选择值之前不允许用户提交。

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

谢谢。

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework viewmodel data-annotations


    【解决方案1】:

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

    @Html.DropDownListFor(model => model.assignedLocumID, Model.AssignedLocum, "Please select")
    

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多