2014-09-26 4 views
0

Я отправляю значение через JQuery в метод действия MVC HttpPost, но вместо этого он получает нулевое значение. Когда я отправляю обычную строку, она работает нормально, но когда я отправляю массив, он получает нулевое значение. Вот код.MVC [HttpPost] Метод принимает нулевой параметр

код для отправки значения

function Submit() { 
     var QSTR = { 
      name: "Jhon Smith", 
      Address: "123 main st.", 
      OtherData: [] 
     }; 
     QSTR.OtherData.push('Value 1'); 
     QSTR.OtherData.push('Value 2'); 

     $.ajax({ 
      type: 'POST', 
      url: '/Omni/DoRoutine', 
      data: JSON.stringify({ obj: 'Reynor here!' }), 
      // this acctually works 
      // and at the action method I get the object[] 
      // with object[0] = 'Reynor here!' 
      // but when I use the object I really need to send I get null 
      data: JSON.stringify({ obj: QSTR }), //I get null 
      contentType: 'application/json; charset=utf-8', 
      dataType: "json", 
      success: function (msg) { 
       alert('ok'); 
      }, 
      error: function (xhr, status) { 
       alert(status); 
      } 

     }); 
    } 

это действие код метода:

  [HttpPost] 
     public ActionResult DoRoutine(object[] obj) 
     { 
      return Json(null); 
     } 

Что такое решение для этого, и почему это происходит? спасибо

ответ

0

QSTR - сложный тип, поэтому вам нужны сложные данные в методе post.

public class QSTR 
{ 
    public string name { get; set; } 
    public string Address { get; set; } 
    public object[] OtherData { get; set; } 
} 

[HttpPost] 
public ActionResult DoRoutine(QSTR obj) 
{ 
    return Json(null); 
} 

Но если вы хотите получить только массив другие данные, вы должны отправить только в вашем AJAX:

$.ajax({ 
    data: JSON.stringify({ obj: QSTR.OtherData }), 
    // other properties 
}); 
+0

Я понимаю, что бы возможное решение, но я до сих пор не понимаю, почему. У меня был аналогичный метод на asp.net, на самом деле это был [WebMethod], и после моего первоначального подхода он работал нормально, я имею в виду, что я получил свой объект []. Почему это не работает с методом [HttpPost] на MVC? Что делать, если эта информация, которую я хочу отправить на сервер, будет означать другую структуру данных в зависимости от нескольких факторов? спасибо – Overlord

+0

@Overlord возможно [это] (http://stackoverflow.com/questions/9067344/net-mvc-action-parameter-of-type-object) может помочь – aleha

+0

спасибо aleha, ваш ответ был очень полезен в поиске моего решения – Overlord

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