我正在使用Entity framwork 6,MVC 4和jquery datepicker。填充所有表单数据并按下提交按钮时, ModelState.IsValid 始终返回false值,因为jquery datepicker值与模型验证字段不匹配。
.cshtml文件中的
-----
-----
@Html.TextBoxFor(m => m.Annieversary, new { id = "anudate", @class = "form-control datetimepicker", @placeholder = "Annieversary Date" })
-----
-----
c#Side
[Required(ErrorMessage = "This field is required")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date, ErrorMessage = "Date required")]
public Nullable<System.DateTime> Annieversary { get; set; }
我在下面试过
@Html.TextBoxFor(m => m.Annieversary,"{0:dd/MM/yyyy}", new { id = "anudate", @class = "form-control datetimepicker", @placeholder = "Annieversary" })
这也与模型不匹配,始终返回null值。我知道c#只接受“MM / DD / YYYY”格式,但jquery datepicker返回“DD / MM / YYYY”格式。我该如何解决这个问题?
答案 0 :(得分:0)
首先,让我们简化以便它可以工作。然后,您可以添加您认为需要的属性。
<强>模型强>
请注意,我使用问号使字段可以为空 - 据我了解您将需要它:
public DateTime? Anniversary { get; set; }
查看强>
注意datepicker
类,我们将用它来调用jQuery UI DatePicker组件:
@Html.TextBoxFor(m => m.Anniversary, new { @class = "datepicker" })
<强>的JavaScript 强>
请注意,我将dateFormat
设置为您需要的格式。这有帮助,但还不够:
<script>
$(function () {
$(".datepicker").datepicker({ dateFormat: "dd/mm/yy" });
});
</script>
<强>的Web.Config 强>
现在,这就是魔术发生的地方。您需要设置应用程序的文化以获得正确的日期格式。我将其设置为pt-BR
,它提供了您需要的相同日期格式:
<globalization culture="pt-BR" uiCulture="pt-BR"/>
应该这样做,但这是最基本的例子。
最重要的是要记住:日期格式应始终与您在web.config 中设置的文化相匹配。