.net mvc3实体框架webapp中的自定义日期输入格式?
我要求允许用户以“yymmdd”格式输入日期,在文本字段中总共 6 位数字。
该表单通过不显眼的 ajax 发布到 mvc3 控制器/操作,该控制器/操作通过 Entity Framework 4.1 将其保存到 mysql 数据库。不幸的是,如果我以所需的“yymmdd”格式输入日期,它会将日期保存为空。
我的问题是如何使用自定义日期格式,保留客户端和服务器端验证并成功将此日期保留到数据库中。我很高兴使用正则表达式进行验证,但需要帮助来解析自定义日期格式。
模型中的日期指定为
public class CustomDate {
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyMMdd}")]
//[RegularExpression(@"^[0-9]{6}$")]
public DateTime? Something { get; set; }
}
支持表单的操作具有以下签名。
public JsonResult NewClaim(CustomDate d) {
db.CustomDate.Add.(d);
db.SaveChanges();
}
I have the requirement that users should be allowed to enter dates in the format "yymmdd", 6 digits in total in a textfield.
The form is posted via unobtrusive ajax to a mvc3 controller/action which persists this to a mysql database via Entity Framework 4.1. Unfortionently it saves the date as a null if I enter the date in the desired "yymmdd" format.
My question is how do I use a custom date format, retain client- and serverside validation and successfully persist this date into the database. I'm happy to use a regexp for the validation but need help to parse the custom date format.
The date in the modelis specified as
public class CustomDate {
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyMMdd}")]
//[RegularExpression(@"^[0-9]{6}$")]
public DateTime? Something { get; set; }
}
The action backing the form have the following signature.
public JsonResult NewClaim(CustomDate d) {
db.CustomDate.Add.(d);
db.SaveChanges();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以为服务器端验证编写一个自定义模型绑定器:
您可以在
Application_Start
中注册它:对于客户端验证,可以采用不同的技术。例如,您可以手动处理它:
You could write a custom model binder for the server side validation:
which you would register in
Application_Start
:For the client side validation there are different techniques that could be employed. For example you could handle it manually: