2016-09-20 6 views
0

Я попытался все решения я уже мог найти на stackoverlfow, а также начиная снова следующие инструкции, приведенные здесь https://stick2basic.wordpress.com/2013/04/14/how-to-pass-model-from-view-to-controller-using-jquery/нуль продолжает передается от взгляда на контроллер

Каждый раз, когда я вызвать мой Аякса называют это проходит нуль на контроллер

* Исправлена ​​орфографическая ошибка, проблема все еще происходит

Модель

public class DateModel 
    { 
     public DateTime date { get; set; } 
    } 

Jav aScript

$(document).ready(function() { 
    $("#jqxdatetimeinput").jqxDateTimeInput({ width: '250px', height: '25px' }); 
    $("#jqxbutton").jqxButton({ width: '150', height: '25' }); 

    $("#jqxbutton").on('click', function() { 

     var dateSelected = $('#jqxdatetimeinput').jqxDateTimeInput('getDate'); 
     alert(dateSelected); 

     var DateModel = 
      { 
       "date": dateSelected 
      }; 

     $.ajax({ 
      url: 'home/submitDate/', 
      data: JSON.stringify(DateModel), 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    }); 
}); 

контроллер

public class HomeController : Controller 
    { 
     public IActionResult Index() 
     { 
      DateModel selectionDate = new DateModel(); 
      return View(); 
     } 

     public JsonResult submitDate(DateModel selectionDate) 
     { 
      return Json(selectionDate.date); 
     } 
    } 
+0

Возможный дубликат [MVC ajax post для метода действия контроллера] (http://stackoverflow.com/questions/19663762/mvc-ajax-post-to-controller-action-method) –

+0

Нет, я пытаюсь пройти сложный, а не param, я пытаюсь сделать противоположное сообщение, которое вы предлагаете. Мне нужно получить модель, а не параметры напрямую, это упрощенный пример моей проблемы, моя модель значительно больше в производстве. – Terry

ответ

0

Вам не нужно использовать JSON.stringify. Поскольку это простой объект, вы можете передать его как есть. Связывание модели будет работать.

$.ajax({ 
      url: 'home/submitDate/', 
      data: DateModel, 
      type: 'POST',     
      success: function (data) { 
       alert(data); 
      } 
     }); 

Или Если вы хотите отправить strinfified версию JSon вашего объекта JS, вам нужно сообщить серверу, какой тип данных, которые вы отправляете, указав значение свойства CONTENTTYPE. Вы ошибаетесь! Исправьте свою опечатку в contentType! Значение

$.ajax({ 
    url: '@Url.Action("submitDate")', 
    data: JSON.stringify(DateModel), 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
     alert(data); 
    } 
}); 
+0

Благодарим вас за ваши предложения, но оба не смогли решить проблему. Исправление моей орфографической ошибки, а также переход на код, который вы предложили, по-прежнему отправляют NULL – Terry

0

Это опечатка по вашему параметру contentType?

contentType: 'aplication/json; charset=utf-8', 

должно быть возможно

contentType: 'application/json; charset=utf-8', 
+0

Спасибо за ваше предложение, ошибка орфографии не решила проблему, хотя я все равно получаю null. – Terry

0

Вопрос был формат даты. Я смог использовать отладку IE и видеть, что JQ Widgets передает дату неожиданным образом, с которой DateTime не справляется.

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