使用模型在mvc 4中根据出生日期validation年龄

我有登记表,其中包含出生日期。

使用日历日期选择器,它输入该字段的值。

这些是为此字段插入值的步骤

步骤1

在此处输入图像描述

第2步

在此处输入图像描述

第3步

在此处输入图像描述

所以它采用dd / MM / yyyy格式的值

这是我的模型类 中出生日期字段的外观

[DisplayName("Date of Birth")] [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public Nullable Date_of_Birth { get; set; } 

这是我视图文件 中出生日期字段的外观

  
@Html.LabelFor(model => model.Date_of_Birth) @Html.Label("*", new { id="star" , @class = "requiredFiledCol" })
@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)

我想对出生地数据进行客户端validation。 当输入字段不在此范围内时显示错误消息100>年龄> 18

我应该采取的方法是什么?

好吧,因为您已经在使用数据注释,为什么不自己制作数据。 做这个:

在您使用的dll中创建一个类或创建一个新类,并至少将以下代码添加到其中

 public class MinimumAgeAttribute: ValidationAttribute { int _minimumAge; public MinimumAgeAttribute(int minimumAge) { _minimumAge = minimumAge; } public override bool IsValid(object value) { DateTime date; if (DateTime.TryParse(value.ToString(),out date)) { return date.AddYears(_minimumAge) < DateTime.Now; } return false; } } 

然后在你的视图模型中执行此操作:

 [MinimumAge(18)] [DisplayName("Date of Birth")] [DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public Nullable Date_of_Birth { get; set; } 

或者您的网页没有问题,因为您使用的框架将提取它。 无需更改类中的ErrorMessage属性,您将获得类似的内容

字段“{0}”无效。

{0}将替换为您在模型中为该属性提供的属性名称或显示名称属性。

希望对你有效。

Walter ps:确保你在控制器中做到了

 if (ModelState.IsValid) { .... } 

为@ Html.ValidationMessageFor和@ Html.TextBoxFor创建一个id,然后使用javascript来validation它。 在您的视图中执行以下操作:

 @section scripts{  }