当我更改CultureInfo时,从视图到控制器获取null datetime值



. net mvc,我有一个控制器,它获得一个datetime参数从视图使用jquery datepicker,然后我通过给控制器的值使用json,它都工作得很好,除了当我将语言cultureInfo更改为德语时,在我的情况下,datetime参数的值始终为空。

这是控制器:

 public JsonResult GetDetails(DateTime? from, DateTime? to)
    {
       //Do something..
    }

模型:

public class UsagesModel
   {
       public DateTime From
    {
        get;
        set;
    }
    public DateTime To
    {
        get;
        set;
    }
}

数据在其中被选择然后传递给控制器的视图:

 <input type="text" id="from" value="@Model.From.ToString("dd/MM/yyyy")" class="datepicker" />
 <input type="text" id="to" value="@Model.To.ToString("dd/MM/yyyy")" class="datepicker" />

 $("#filter").click(function (e) {
   fromdate = $("#from").val();
   todate = $("#to").val();
 $.getJSON('@Response.ApplyAppPathModifier(@Url.Action("GetDetails"))', {
            'from': StringToJSONDate(fromdate),
            'to': StringToJSONDate(todate)
        }, function (groupusages) {
           .....Do Something....
            }).error(function (xhr, textStatus, errorThrown) {
            //document.location.href = "/Login";
        });
    });
//function for parsing data to json
  function StringToJSONDate(stringDate) {
    var dateParts = stringDate.split("/");
    var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
    return date.toJSON();
 }

我能做什么,问题在哪里,因为它在英语和法语文化中都很好。请帮帮我!

您可以做的一件事是更改您的方法签名来做这样的事情。你可以花很多时间为你的mvc应用获取适合不同文化的正确格式。

   public JsonResult GetDetails(string from, string to)
        {
           var fromDate = DateTime.Parse(from);
           var toDate = DateTime.Parse(to);
           //Do something..
        }

正如Khan在他的评论中提到的,你可以将其设置为DateTime.ParseExact(),这样你就不会遇到其他文化问题。

https://msdn.microsoft.com/en-us/library/System.DateTime.ParseExact (v = vs.110) . aspx

我不知道确切的变化,但这可能是因为德国使用的日期/时间格式与讲英语和法语的地点不同。我会尝试在javascript中添加一些警报,看看在不同的点上你有一个值,然后看看它在哪里出错。我怀疑值仍然通过,但不满意的日期格式,应该是一个快速修复一些。split("/")和。join("/")函数调用和寻址数组的索引

相关内容

  • 没有找到相关文章

最新更新