我最近将MVC 3应用程序升级到MVC 5.我创建了一个新的MVC 5项目并将我的文件放入其中。
似乎日期的处理方式与之前不同。有一个错误验证消息通过使用@Html.ValidationMessageFor(x=>x.mydate)
在视图中显示,我无法通过DataAnnotation技术覆盖,甚至使用我之前使用不同文化格式的模型绑定器" dd / MM / yyyy&#34 ;。
有人可以帮我揭示MVC 5中日期验证的变化吗?
我的班级注释
public class passport
{
[Display(Name = "Fecha de Solicitud")]
//[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? spanishfechaSolicitud { get; set; }
}
和观点。 前
@Html.TextBoxFor(x => x.passaporte.spanishfechaSolicitud, new { @Value = String.Format("{0:dd/MM/yyyy}", Model.passaporte.spanishfechaSolicitud) })
后
@Html.EditorFor(x => x.passaporte.spanishfechaSolicitud)
我根据我的建议更新了我的代码。删除DataType属性和值html属性。我也使用了EditorFor()。现在日期在页面上显示正常;然而,javascript验证说"字段Fecha de Solicitud必须是约会。"如果我输入它为MM / dd / yyyy它喜欢它。如何验证此格式? DD / MM / YYYY。提前致谢
答案 0 :(得分:0)
MVC仅在使用Html.EditorFor()
或Html.DisplayFor()
时使用DisplayFormat格式化日期。 TextBoxFor()
不会使用这些属性。
此外,在属性中使用@符号是不正确的,除非该属性是c#保留字(例如@class)。值不是保留字,因此不需要@。
你也不应该覆盖这样的值,你基本上使整个模型绑定毫无意义。
答案 1 :(得分:0)
在寻找jquery验证错误的解决方案之后。我发现这个代码解决了我在客户端的问题。我已经在服务器上进行了验证,这是有效的。我在这里分享我的发现。
$.validator.addMethod('date',
function (value, element) {
if (this.optional(element)) {
return true;
}
var ok = true;
try {
$.datepicker.parseDate('dd/mm/yy', value);
}
catch (err) {
ok = false;
}
return ok;
});