2016-02-22 4 views
1

Я хочу опубликовать DateTime из javascript для моего контроллера MVC. Строка datetime находится в формате yy-mm-dd hh: mm. Это мой Javascript код:Дата ввода данных ajax в контроллер MVC

var dataObject = { 
     dateData: New Date('16-01-01 15:30') 
     } 

     console.log(dataObject); 

     $.ajax({ 
      type: "POST", 
      url: '@Url.Content("~/Service/DateTest")', 
      dataType: "json", 
      data: dataObject, 
      }, 
      success: function (response) { 

      } 
     }); 
    } 

Это мой MVC контроллер:

public ActionResult DateTest(DateObject data) 
     { 
      return Json("ok", JsonRequestBehavior.AllowGet); 
     } 

Однако в моем DateObject я получаю "{1/1/0001 12:00:00 AM}".

Что я делаю неправильно?

+0

какие рамки является MVC в? – Derek

ответ

3

Что я делаю неправильно?

Для начала вы используете недопустимый яваскрипт и получаю ошибку на этой линии:

dateData: New Date('16-01-01 15:30') 

Помнить, что Javascript случай-зависимый язык, так что я думаю, вы, вероятно, хотел использовать конструктора Date:

dateData: new Date('16-01-01 15:30') 

Кроме того, используя ISO8601 рекомендуемый формат, который вы должны передать в конструктор:

dateData: new Date('2016-01-01T15:30') 

Вы также можете преобразовать его в строку перед отправкой:

dateData: new Date('2016-01-01T15:30').toISOString() 
+0

Такая же проблема при использовании dateData: new Date ('01 -01-2016T15: 30 '), может быть, что dateData в моем объекте C# имеет тип DateTime? –

+0

Новая дата ('01 -01-2016T15: 30 ') в консоли дает недопустимую дату –

+0

Перед отправкой попробуйте использовать 'toISOString()'. Также используйте формат '2016-01-01T15: 30'. Я обновил свой ответ на примере. –

0

Вы должны вызвать JSON.stringify (dateData) для вас данные свойства в запросе Ajax. Если ваша дата не является сериализованной, связующее устройство модели не сможет десериализовать ее правильно. В общем случае используйте JSON.stringify каждый раз, когда вы передаете объект javascript с dataType: json. У вас были некоторые ошибки в вас $ .ajax() call также. Вот исправленный вариант:

var dataObject = { 
    dateData: new Date('16-01-01 15:30') 
} 

console.log(dataObject); 

$.ajax({ 
    type: "POST", 
    url: '@Url.Content("~/Service/DateTest")', 
    dataType: "json", 
    data: dataObject, 
    success: function (response) { 
     // whatever you need to do in case of success 
    } 
}); 
1

Вы должны использовать правильный формат даты Дата объекта:

var dataObject = { 
    dateData: new Date("October 13, 2014 11:13:00") 
} 

console.log(dataObject); 

$.ajax({ 
    type: "POST", 
    url: '@Url.Content("~/Service/DateTest")', 
    dataType: "json", 
    data: dataObject, 
    success: function (response) { 
    // whatever you need to do in case of success 
    } 
}); 

Лучшее решение для Javascript Дата объекта: http://www.w3schools.com/js/js_dates.asp

Смежные вопросы