C# 如何在EditorTemplate上使用验证

C# 如何在EditorTemplate上使用验证,c#,razor,asp.net-mvc-5,mvc-editor-templates,C#,Razor,Asp.net Mvc 5,Mvc Editor Templates,我在做一个mvc5项目。 A已生成包含以下html/razor的视图: <div class="form-group"> @Html.LabelFor(model => model.Reservation.ReservationDate, new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => mode

我在做一个mvc5项目。 A已生成包含以下html/razor的视图:

<div class="form-group">
    @Html.LabelFor(model => model.Reservation.ReservationDate, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.Reservation.ReservationDate)
        @Html.ValidationMessageFor(model => model.Reservation.ReservationDate)
    </div>
</div>
问题是,我丢失了通过模型中的数据注释定义的验证,因为

class="text-box single-line valid" type="date" data-val-required="The Datum field is required." data-val-date="The field Datum must be a date." data-val="true"
由EditorTemplate重写。我可以在我的模板中包含该代码,但那样的话它是硬编码的。对我来说,这不是一个选择

所以我想知道,如何才能以更好的方式添加这些html注释

这是“我的模型”中的属性及其数据注释:

[UIHint("DatePicker")]
[DisplayName("Date")]
[DataType(DataType.Date, ErrorMessage="Not a valid date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]
public DateTime ReservationDate { get; set; }

通过创建input HTML元素而不是使用HTML.TextBoxFor()为自己创建了一些额外的工作。尝试这样做:

@Html.TextBoxFor(model => model, new { @class = "fieldDate", @Value = Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : "" }) 
在javascript代码中:

$('.fieldDate').datepicker({
    format: "dd/mm/yyyy", 
    autoclose: true, 
    todayHighlight: true
});

另外,jquery datepicker()方法是否覆盖HTML属性?

感谢您为我指明了正确的方向。虽然我使用“Html.GetUnobtrusiveValidationAttributes”字典找到了一个解决方案,并通过从键中获取值来添加验证消息,但您的解决方案不那么牵强,因此回答了我的问题。
@Html.TextBoxFor(model => model, new { @class = "fieldDate", @Value = Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : "" }) 
$('.fieldDate').datepicker({
    format: "dd/mm/yyyy", 
    autoclose: true, 
    todayHighlight: true
});