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

埃米尔

最后几天,我很难说服MVC5项目使用我想要的日期。经过密集的谷歌搜索后,我尝试了许多尝试以使其正常运行,但没有成功。

这是问题所在:

我需要以dd.MM.yyyy(即2015年7月15日)的格式显示和编辑日期。为了进行编辑,我还需要使用jquery ui datepicker。这里的事情是,我已经能够成功设置该日期选择器以请求的格式显示日期,而且jquery验证现在可以正确验证给定格式的日期。到目前为止,对于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",
});

因此,即使日期选择器也知道格式应为什么样。

最后一个组件是通过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/zh-CN/library/bz9tc508%28v=vs.140%29.aspx

当将发布的数据解析并绑定到模型/参数时,MVC使用当前的区域性。建议在整个范围内使用相同的日期分隔符-html,客户端,javascript,服务器区域性,...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET MVC5以自定义格式显示日期

来自分类Dev

ASP.NET MVC5 上的日期时间格式“dd/MM/yyyy”

来自分类Dev

ASP.NET MVC5 删除日期格式字符串

来自分类Dev

Asp.Net MVC 5日期格式

来自分类Dev

ASP.NET MVC 日期输入格式

来自分类Dev

在ASP.NET MVC5中的两个日期值之间查询

来自分类Dev

ASP.NET MVC5 OWIN拒绝长URL

来自分类Dev

Asp.Net MVC5如何确保cookie存在?

来自分类Dev

ASP.NET MVC5中的复杂路由

来自分类Dev

SignalR ASP.NET MVC5身份

来自分类Dev

为ASP.NET MVC5关系创建DropDownList

来自分类Dev

ASP.NET MVC5身份定制

来自分类Dev

单元测试ASP.NET MVC5应用

来自分类Dev

Asp.net MVC5,如何加载.hbs文件

来自分类Dev

在ASP.NET MVC5中显示PageList

来自分类Dev

覆盖Asp.net身份MVC5

来自分类Dev

SignalR ASP.NET MVC5身份

来自分类Dev

Asp.net MVC5,如何加载.hbs文件

来自分类Dev

ASP.NET MVC5身份定制

来自分类Dev

ASP.net MVC5提交加载状态

来自分类Dev

ASP.NET MVC5 OWIN拒绝长网址

来自分类Dev

asp.net mvc5 JsonResult的用法

来自分类Dev

“懒惰” MVC5 Razor执行-ASP.NET(优化)

来自分类Dev

ASP.NET MVC5身份实现

来自分类Dev

Iframe 未在 Asp .Net MVC5 中显示网站

来自分类Dev

如何在ASP.NET MVC 5中格式化日期

来自分类Dev

日期格式dd / MM / yyyy在asp.net mvc 5中不起作用

来自分类Dev

DateTime用户声明,将日期格式设置为字符串(Asp.Net MVC 5)

来自分类Dev

使用EF6将文档存储在数据库ASP.NET MVC5中-代码优先