【问题标题】:MVC 4 models not accept jquery datapicker date formatMVC 4 模型不接受 jquery datepicker 日期格式
【发布时间】:2016-12-19 06:30:31
【问题描述】:

我正在使用实体框架 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#端

    [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" })

这也与模型不匹配,总是返回空值。我知道 c# 只接受“MM/DD/YYYY”格式,但 jquery datepicker 返回“DD/MM/YYYY”格式。我该如何解决这个问题?

【问题讨论】:

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


【解决方案1】:

首先,让我们简化一下,让它可以工作。然后,您可以添加您认为需要的属性。

型号
请注意,我使用问号使该字段可以为空 - 据我了解,您将需要它:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多