2014-01-29 4 views
0

Я использую ниже, чтобы опубликовать список объектов для контроллера ajax.Как опубликовать массив json-объекта для метода контроллера

JQuery материал:

var values = []; 
values.push(rowData1); 
values.push(rowData2); 
values.push(rowData3); 

var data = JSON.stringify({ 
    installationControls: values 
}); 

$.ajax({ 
    url: '/ControllerName/fin', 
    type: "POST", 
    contentType: "application/json", 
    data: { 
     data: data 
    }, 
    success: function() { 
     console.log('success!!'); 
    } 
}); 

Пожалуйста, предложите мне, что это неправильно .. метод

контроллер:

[HttpPost] 
public JsonResult fin(object s) { 
    //................. 
} 

размещены данные следующим образом:

  installationControls":[{"syID":"1789","FullName":"Bejin Mara","Min":"5","MSG":""},{"syStudentID":"46","FullName":"Calderon Laura","MinAbsent":"7","MSG":""},{"syID":"17","FullName":"mic Mayra","Min":"5","MSG":""}] 

пытался автор: ng тот же объект и передан в аргумент контроллера, но не работал.

+0

Так что это ваша проблема именно? Любая ошибка msg на firebug? введите код контроллера –

+0

Невозможно вызвать метод контроллера - fin (объект s) '. Скажите, мне нужно изменить argumnet вместо типа object для любого другого типа, чтобы сохранить массив json? – dsi

ответ

0

Ваши настройки ajax кажутся правильными. Однако, так как конечная точка ожидает и объект с именем «s», я изменил data: -разрядного, чтобы отразить это:

$.ajax({ 
     url: '/ControllerName/fin', 
     type: "POST", 
     contentType: "application/json", 
     data: { s: data }, 
     success: function() { 
      console.log('success!!'); 
     } 
    }); 

ли это помощь?

Edit: Контроллер может принять структура данных, таких, как это:

public class SingleListObject 
{ 
    // Add properties to this class to match the properties held by rowData 
} 

public class MyModelWithList 
{ 
    public List<SingleListObject> MyList { get; set; } 

    public MyModelWithList() 
    { 
     MyList = new List<SingleListObject>(); 
    } 
} 

public JsonResult fin(MyModelWithList details) { 
    //................. 
} 

Ajax:

$.ajax({ 
    url: '/ControllerName/fin', 
    type: "POST", 
    contentType: "application/json", 
    data: JSON.stringify({ myList: values }), // If this doesn't work, try JSON.stringify({ details: { myList: values } }) 
    success: function() { 
     console.log('success!!'); 
    } 
}); 
+0

NOt сработал. Похоже, мой метод контроллера должен иметь другой тип аргумента вместо «object s».что я должен держать в руках массив json? – dsi

+0

Я отредактировал мое сообщение, чтобы предложить структуру данных, сообщите мне, если это сработает. –

+0

пытался создать тот же объект, который отправляется контроллеру, но он не работает. Пожалуйста, предложите, как это можно решить. – dsi

0

Вы можете либо использовать структуру данных ViewModel, связанный с представлением для того, чтобы во время выполнения в иметь возможность разрешить объект в запросе.

Существует еще один способ связать/сложный тип объекта, кроме объекта ViewModel по умолчанию, которые вы можете следить здесь Sending complex JSON objects to Asp.net MVC using jQuery Ajax.

0

не уверены, если это решит проблему, но в вашем АЯКСЕ настроек попробуйте добавить традиционным: true и отпустите JSON.stringify.

При передаче массивов в контроллерах, которые я нашел что мне нужно, чтобы использовать традиционный набор для истинного

$.ajax({ 
    url: '/ControllerName/fin', 
    type: "POST", 
    contentType: "application/json", 
    data: s: data, 
    traditional:true, 
    success: function() { 
     console.log('success!!'); 
    } 
}); 
0

Измените JavaScript, чтобы быть похожим на это:

var values = []; 
values.push(rowData1); 
values.push(rowData2); 
values.push(rowData3); 

var postedData = JSON.stringify({ 
    installationControls: values 
}); 

$.ajax({ 
    url: '/ControllerName/fin', 
    type: "POST", 
    contentType: "application/json", 
    data: postedData, 
    success: function() { 
     console.log('success!!'); 
    } 
}); 

И в контроллере, перевести контроллер в be:

[HttpPost] публичный рельс JsonResult (список установкиControls) { // ................. }

InstallationControl Где это класс, который обладает теми же свойствами, что и вывешенных значения, в этом случае он должен обладать следующими свойствами:

public class InstallationControl 
{ 
    public string syID{get;set} 
    public string FullName{get;set} 
    public string Min{get;set} 
    public string MSG{get;set} 
} 
Смежные вопросы