【发布时间】: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