MVC 4模型不接受jquery datapicker日期格式

时间:2016-12-19 06:30:32

标签: c# asp.net-mvc asp.net-mvc-4 entity-framework-6 jquery-ui-datepicker

我正在使用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”格式。我该如何解决这个问题?

1 个答案:

答案 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 中设置的文化相匹配。