Cha*_*thz 3 c# asp.net jquery razor asp.net-mvc-4
我有登记表,其中包含出生日期.
使用日历日期选择器,它输入该字段的值.
这些是为此字段插入值的步骤
步骤1

第2步

第3步

所以它采用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; }
Run Code Online (Sandbox Code Playgroud)
这是我视图文件中出生日期字段的外观
<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>
Run Code Online (Sandbox Code Playgroud)
我想对出生地数据进行客户端验证.输入字段不在此范围内时显示错误消息100>年龄> 18
我应该采取的方法是什么?
Wal*_*ven 10
好吧,因为你已经在使用数据注释,为什么不自己做.做这个:
在您使用的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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的视图模型中执行此操作:
[MinimumAge(18)]
[DisplayName("Date of Birth")]
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> Date_of_Birth { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者您的网页没有任何问题,因为您使用的框架将提取它.如果不更改类中的ErrorMessage属性,您将获得类似的内容
字段"{0}"无效.
{0}将替换为您在模型中为该属性提供的属性名称或显示名称属性.
希望对你有效.
Walter ps:确保你在控制器中做到了
if (ModelState.IsValid)
{
....
}
Run Code Online (Sandbox Code Playgroud)