【发布时间】:2011-09-19 10:57:55
【问题描述】:
我的要求是允许用户以“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();
}
【问题讨论】:
-
为什么不使用 jQuery Datepicker?这为他们提供了一种更简单的方法来填写日期并且格式始终正确:) docs.jquery.com/UI/Datepicker
-
这是针对仅使用键盘的数据输入应用程序,并且 adatepicker 太慢而无法使用。 yymmdd 格式是必需的。
-
他们也可以使用 Datepicker 手动插入。您甚至可以强制他们使用某种格式。只需将日期选择器与文本框链接即可。
标签: asp.net-mvc-3 unobtrusive-validation