代码之家  ›  专栏  ›  技术社区  ›  Phil.Wheeler

传递给MVC操作的JSON日期参数始终为空

  •  4
  • Phil.Wheeler  · 技术社区  · 14 年前

    为了让这个日期成功到达,我需要使用什么考虑/格式?或者我需要采取什么方法?

    ...other code ...
    myStory.Deadline = new Date($('#story-deadline').val());
    
    $.ajax({
        url: '/Project/' + action[2] + '/AddStory',
        data: { Summary: myStory.Summary, Size: myStory.Size, Priority: myStory.Priority,
                Owner: myStory.Owner, Deadline: myStory.Deadline },
        dataType: 'json',
        traditional: true,
        type: 'POST',
    ...the rest of the code...
    

    [HttpPost]
    public JsonResult AddStory(int projectid, Story story)
    {
    ...some code that doesn't have a DateTime object to work with...
    
    1 回复  |  直到 14 年前
        1
  •  6
  •   Oleg    14 年前

    Microsoft使用 JavaScriptSerializer /Date(utcDate)/ 的格式 Date

    '"\\/Date(' + myStory.Deadline.getTime() + ')\\/"'
    

    var d = myStory.Deadline;
    var dateForMS = '"\\/Date(' +
            Date.UTC (d.getUTCFullYear(), d.getUTCMonth(),
                      d.getUTCDate(), d.getUTCHours(),
                      d.getUTCMinutes(), d.getUTCSeconds(),
                      d.getUTCMilliseconds()) + ')\\/"'
    

    Sys.Serialization.JavaScriptSerializer MicrosoftAjax.js 序列化 Deadline 或任何其他 日期

    更新 '\/Date(' ')\/' '"\\/Date(' ')\\/"'

    更新2 Parse 方法将发布的参数转换为类型。因此可以使用 DateTime.Parse . 例如,您可以使用ISO 8601格式,如“2010-08-29T13:15:00.0000000 Z”。在现代浏览器(firefox、chrome)中,可以使用 toISOString() 功能。为了更加独立,可以实现如中所述的数据转换 http://williamsportwebdeveloper.com/cgi/wp/?p=503 :

    var d = new Date($('#story-deadline').val())
    //var d = new Date(); // get the date. Here we use just Now.
    var dAsISOString;
    if ($.isFunction(d.toISOString)) {
        //alert("internal toISOString are used!");
        dAsISOString = d.toISOString();
    }
    else {
        dAsISOString = d.getUTCFullYear() + '-' + padzero(d.getUTCMonth() + 1) + '-' +
                       padzero(d.getUTCDate()) + 'T' + padzero(d.getUTCHours()) + ':' +
                       padzero(d.getUTCMinutes()) + ':' + padzero(d.getUTCSeconds())+'.'+
                       pad2zeros(d.getUTCMilliseconds()) + 'Z';
    }
    var myStory = { Summary: 'Test description', Size: 8, Dedline: dAsISOString };
    $.ajax({
        url: '/Project/1/AddStory',
        data: { Summary: myStory.Summary, Size: myStory.Size, Dedline: myStory.Dedline },
        dataType: 'json',
        // ...
    });