ASP MVC验证时间
我正在尝试创建一个自定义数据注释时间验证器来验证日期时间字段。 我希望它在客户端进行验证。 我在这个网站上找到了一个例子,但我认为它的一部分缺失。 我相信我创建的类是部分工作的,因为它似乎在验证新创建的条目,但在编辑时不验证。 另外我用jquery-ui-timepicker-addon.js使用了一个timepicker。
I also have added this to my web.config
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
我添加了jquery.validate.unobtrusive.js“到我创建的timepicker包,下面你会发现我的模型,我创建的TimeAttribute类和我的Edit cshtml。
任何帮助深表感谢
[DisplayName("Injury Time")]
[DataType(DataType.Time)]
[Time]
[DisplayFormat(DataFormatString = "{0:hh:mm tt}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> InjuryTime { get; set; }
public class TimeAttribute:ValidationAttribute,IClientValidatable {public IEnumerable GetClientValidationRules(ModelMetadata metadata,ControllerContext context){yield return new ModelClientValidationRule {ErrorMessage = ErrorMessage,ValidationType =“time”}; }
public override bool IsValid(object value)
{
DateTime time;
if (value == null || !DateTime.TryParse(value.ToString(), out time))
return false;
return true;
}
``
@ Html.LabelFor(model => model.InjuryTime,new {@class =“control-label col-md-2”})@ Html.EditorFor(model => model.InjuryTime)@ Html.ValidationMessageFor(model => model 。补时阶段)
把事情简单化。 使用[远程]验证属性来代替您创建的属性。
有一个例子:
模型:
[DisplayName("Injury Time")]
[DataType(DataType.Time)]
[Remote("CheckTime", "Home", ErrorMessage = "Please check this field")]
[DisplayFormat(DataFormatString = "{0:hh:mm tt}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> InjuryTime { get; set; }
家是你的控制器。
控制器:
public ActionResult CheckTime(Nullable<System.DateTime> InjuryTime)
{
if (InjuryTime == something)
{
// This show the error message of validation
return Json(true, JsonRequestBehavior.AllowGet);
}
else
{
// This will ignore the validation
return Json(false, JsonRequestBehavior.AllowGet);
}
}
就像那样简单。 视图不得修改。 随意问。
链接地址: http://www.djcxy.com/p/56649.html下一篇: Server side validation with custom DataAnnotationsModelValidatorProvider