2013-10-14 3 views
2

У меня есть следующий код РАБОЧЕГО:C# Сохранение объекта списка Vs Сохранение объект (от JSON)

класс (Заявленные объекты)

public class saveRow 
{ 
    public int proId { get; set; } 
    public string proName{get;set;} 
} 

Контроллер:

[HttpPost] 
public virtual JsonResult SaveRow(saveRow input) 
{ /* CODE HERE */} 

JavaScript Object (Been направляется)

var test = {"proId" : 1, "proName" : "Test"} 

JavaScript Ajax вызовов

$.ajax({ 
     type: "POST", 
     url: "URL", 
     dataType: "json", 
     data: test, 
     traditional: true, 
     success: function (data, status, request) { 
      if (data.Error != undefined) { 
       alert("System Error: " + data.Error); 
       $(row).find('*').attr('disabled', false); 
       return; 
      } 

     }, 
     error: function (request, status, error) { 
      console.log("ERROR"); 
     } 
    }); 

Теперь проблема возникает, когда я хочу, чтобы отправить список моих строк, а не по одному за раз, так что я сделал следующее:

Для тестирования я взял один и тот же объект и сделать

var test2 = []; test2.push(test); test2.push(test); 

И объект теперь выглядит следующим образом:

[{"proId" : 1, "proName" : "Test"},{"proId" : 1, "proName" : "Test"}] 

Мой контроллер теперь выглядит следующим образом :

[HttpPost] 
    public virtual JsonResult SaveRow(List<saveRow> input) 
    { /* CODE HERE */} 

Также судимое IEnumberable при передаче списка объектов, как JSON varible вход всегда нуль.

Но каждый раз, когда я отправляю этот список через параметр контроллера, «вход» всегда равен нулю.

Почему это?

SOLVED-

public virtual JsonResult SaveRow(saveRow[] input) 

И добавил тип контента! С JSON.stringify!

ответ

1

Попробуйте так:

  • Установить имя обертка для вашего списка так же, как и у вашего аргумента имя «вход»
  • Set типа содержимого
  • Удалить традиционные и использовать JSON.stringify для stringify ваши данные.

JS:

var data = { "input": test2 }; 

$.ajax({ 
     type: "POST", 
     url: "URL", 
     dataType: "json", 
     contentType:"application/json; charset=utf-8", //<--Set content Type 
     data: JSON.stringify(data), //Set data 
     success: function (data, status, request) { 
      if (data.Error != undefined) { 
       alert("System Error: " + data.Error); 
       $(row).find('*').attr('disabled', false); 
       return; 
      } 

     }, 
     error: function (request, status, error) { 
      console.log("ERROR"); 
     } 
    }); 
+0

Ааа я вижу, что вы получаете в здесь, в настоящее время добавил его и проект будет обновлять соответную плита результата. – LmC

+0

@LmC Да, дайте мне знать, как это происходит. Если это не работает, просто вставьте то, что вы видите в сетевой консоли для части запроса. – PSL

+0

Привет, все равно такая же проблема, мой объект выглядит как {"input": [{}, {}]} обратите внимание, что {} просто кратковременно для показанной выше структуры, чтобы сохранить комментарий tidy – LmC

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