我正在使用 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 ”也作为必填字段并且不允许用户提交,直到选择了一个值。
有谁知道为什么这个属性是必填字段,即使我没有标记它是这样的?
谢谢。