【问题标题】:Date format not maintained in jquery postjquery post中未维护日期格式
【发布时间】:2013-05-13 16:45:40
【问题描述】:

在我在 VS2010 中开发的 MVC 4 项目中,我有一个屏幕,其中有一个下拉菜单,显示文本的日期为 dd-MMM-yyyy,基础值为 dd-mm-yyyy。

在发布数据的函数中,当我提醒它时,我可以看到所选值在 dd-mm-yyy 中。

  alert($("#dropdwn_BirthDateVal").val());

上面的这一行以 dd-mm-yyyy 格式显示了我想要的日期。

但是,当我尝试将该值发布到我的控制器时,使用相同的方法

  $.ajax({
            type: "POST",
            url:"@Url.Content("~/Home/GetUserDetails")",
            async:false,
            dataType: "JSON",
            data: {
                 //.....other string and integer values
                 //.....that go thru properly
                "myDto.DOB":  $("#dropdwn_BirthDateVal").val()
            },
            error: function (error) {
                alert(error);

           },

           ..... remaining code here 

...日期为1/1/0001 12:00:00 AM

我要发布到的控制器操作“GetUserDetails”有一个名为 UserVM 的 ViewModel 类作为其参数。 UserVM 有一个名为 MyDto 的 dto 类。在 MyDto 中有一个 Date 属性,称为 DOB,类型为 DateTime。 MyDto 还有其他属性。字符串和整数值正确传递。

我错过了什么?

【问题讨论】:

  • 您的服务器端编组器可能无法识别或不期望“dd-mm-yyyy”作为有效的日期模式。我没有在 .net 中工作过,有没有办法在你的 DTO 中指定要使用的日期模式?

标签: asp.net-mvc jquery asp.net-mvc-4


【解决方案1】:

您需要在将日期发送到服务器时将其格式化为 ISO-8601,例如2011-12-19T15:28:46.493Z

this similiar question 的这个答案展示了很多方法来实现这一点,我最喜欢的是JSON.parse(JSON.stringify(new Date())),但它不支持 IE7。

【讨论】:

  • 如果将其转换为字符串并将其发送到控制器,则分配它的参数为 DateTime 类型。不会有问题吗?我现在不在我的开发箱里尝试一下。
  • 不,.net 序列化程序将根据分配给的类型和输入字符串的格式知道如何处理 oy
【解决方案2】:

收到的DateTime 变成了1/1/0001 12:00:00 AM,因为无法正确解析日期格式 (dd-mm-yyyy)。当框架无法解析您的日期/时间字符串时,结果就是您上面的结果。

结果取决于您机器的本地化。例如,在en-US 本地化下,.NET 框架默认日期格式为MM/dd/yyyy。但是您可以明确指定日期的格式,如下所示。

using System.Globalization;

// dateString is the string in your dd-MM-yyyy format
public void GetValidDate(string dateString) 
{
    DateTime parsedDateTime;
    DateTime.TryParseExact(dateString, "dd-MM-yyyy", null, 
                               DateTimeStyles.None, out parsedDateTime)
}

看看MSDN documentation

【讨论】:

  • 感谢您的回复,其实我知道它没有被解析。为什么它没有被解析以及如何修复它是我一直在寻找的。我在开发电脑上将位置设置更改为美国、英国、法国,效果都一样。日期仍然是 1/1/0001 12:00:00 AM
猜你喜欢
  • 2023-02-07
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2012-04-01
相关资源
最近更新 更多