【发布时间】:2015-06-22 07:16:27
【问题描述】:
我有注册表,其中包含出生日期字段。
使用日历日期选择器将值输入到该字段。
这些是为该字段插入值的步骤
第一步
第二步
第三步
所以它以 dd/MM/yyyy 格式取值
这是我的模型类
中出生日期字段的外观[DisplayName("Date of Birth")]
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> Date_of_Birth { get; set; }
这是我的查看文件
中出生日期字段的外观 <div class="form-group">
<div class="editor-label">
@Html.LabelFor(model => model.Date_of_Birth)
@Html.Label("*", new { id="star" , @class = "requiredFiledCol" })
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Date_of_Birth, "{0:dd/MM/yyyy}", new { @class = "form-control datepicker", placeholder = "DD/MM/YYYY" , maxlength="100" })
@Html.ValidationMessageFor(model => model.Date_of_Birth)
</div>
</div>
我想对出生字段的数据进行客户端验证。当输入字段不在此范围内时显示错误消息100>Age>18
我应该采取什么方法?
【问题讨论】:
-
没有什么可以做到这一点。您需要编写自己的验证属性并实现
IClientValidatable。 This article 提供了很好的指导。 -
旁注:您没有使用
EditorFor()来生成HTML5 日期选择器,因此不需要[DataType(DataType.Date)]和ApplyFormatInEditMode = true(它们仅适用于EditorFor()) -
我希望你通过javascript初始化
datepicker。然后,您将有几个选项来设置start date和end date,这样您就可以不用担心验证来渲染您的日期选择器 -
@Chathz,根据今天的日期计算控制器中允许的最小和最大日期,然后将它们传递给视图(使用视图模型或
ViewBag属性,然后设置日期选择器minDate和maxDate选项 - 例如 { ..., minDate: @Model.MiinDate, ...}` 但这不会为您提供服务器端验证,因此您需要再次检查 POST 方法并酌情添加ModelState.Errors -
@Chathz,您还可以使用数字偏移量来指定
minDate和MaxDate值,例如{ minDate: -20, maxDate: "+1M +10D" }。 `Refer documentation
标签: c# jquery asp.net asp.net-mvc-4 razor