ASP.NET MVC5以错误的格式存储日期



末日,我很难说服MVC5项目与我想要的日期合作。经过密集的谷歌搜索后,我尝试了许多ATTEPMT来使其正常工作,但没有成功。

这是问题:

我需要以格式DD.Mm.yyyy(即15.07.2015)在网页上显示和编辑日期。对于编辑,我还需要使用jQuery UI datePicker。这里的问题是,我已经能够成功设置该datePicker以以请求的格式显示日期,现在也可以正确验证给定格式的日期。因此,到目前为止,UI如此出色。当我单击提交按钮时,问题出现在时刻 - 有一个错误消息,例如:

值'15 .07.2015'对开始日期无效。

经过简短的调查,我发现日期传递给服务器时,它已切换格式 - 而不是dd.mm.yyyy,日期被视为mm.dd.yyyy。换句话说,仅当日期的一天高于12。

时,错误才会弹出。

这是我的代码的一些亮点:

在我的约会模型中,我有一个:

[Required]
[Display(Name = "Start Date")]
[DataType(DataType.Date)]
[UIHint("Date")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime DateStarts;

我认为,我需要做的一切才能以指定格式显示该日期,并迫使用户以正确格式填写文本框。

如[uihint(" date")],我有自己的模板用于编辑日期。该模板的实现如下:

@model Nullable<DateTime>
@{
DateTime dt = DateTime.Now;
if (Model != null)
{
    dt = (System.DateTime)Model;
}
@Html.TextBox("", dt.ToString("dd.MM.yyyy"), new { @class = "form-control datecontrol", type = "text", data_val_date = "Field must have format dd.MM.yyyy" })
<i class="fa fa-calendar form-control-feedback lowerzindex"></i>

}

jQuery DatePicker具有以下实现:

 $('.datecontrol').datepicker({
    onClose: function () { $(this).valid(); },
    minDate: "-1M",
    dateFormat: "dd.mm.yy",
});

所以即使是datepicker也知道格式的外观。

最后一个组件是通过jQuery.validation验证:

 $.validator.addMethod(
    'date',
    function (value, element, params) {
        if (this.optional(element)) {
            return true;
        };
        var result = false;
        try {
            $.datepicker.parseDate('dd.mm.yy', value);
            result = true;
        } catch (err) {
            result = false;
        }
        return result;
    },
    ''
);

我知道,日期以某种文化中立格式传递给服务器,但是我认为,当我以所需格式的众多位置装饰代码时,这将确保转换为该文化中性格式的转换将正确完成。还是我错过了其他东西?

谢谢

您的问题在于您没有为应用程序设置适当的Culture。您的要求最终在文化下执行month-day-year订单(可能在en-US下)导致您问题。

最简单的解决方案是设置day-month-year顺序和.作为web.config中的日期分离器的文化,例如:

<configuration>
   <system.web>
       <globalization uiCulture="de-DE" culture="de-DE" />
       ...

https://msdn.microsoft.com/en-us/library/bz9tc508(v=vs.140).aspx

在解析和绑定数据与模型/参数时,MVC使用当前文化。建议在整个范围 - html,客户端,JavaScript,服务器文化,...

相关内容

  • 没有找到相关文章

最新更新