У меня ниже кода jquery,
var ids = []
var id ={"Param1": 1, "Param2": 2, "Param3": 3}
ids.push(id)
var id ={"Param1": 3, "Param2": 2, "Param3": 6}
ids.push(id)
$.getJSON("/Controller/Action1",
{
str: ids
}
, function (data) {
});
public JsonResult Action1(string[] str)
{
return Json("Success", JsonRequestBehavior.AllowGet);
}
Я знаю, что строковый массив неверен. Что такое правильный тип параметра, чтобы получить коллекции, переданные из jQuery.
Заранее спасибо!!
вы пытаетесь отправить коллекцию объектов контроллеру, попробуйте выполнить следующее:
var data = {};
data["ids[0].Param1"] = 1
data["ids[0].Param2"] = 2
data["ids[0].Param3"] = 3
data["ids[1].Param1"] = 3
data["ids[1].Param2"] = 2
data["ids[1].Param3"] = 6
$.getJSON("/Controller/Action1",data
, function (response) {
});
то в вашем контроллере создайте модель, чтобы вы могли привязываться к коллекции этой модели:
public class MyModel
{
public int Param1{get;set;}
public int Param2{get;set;}
public int Param3{get;set;}
}
public JsonResult Action1(IList<MyModel> ids)
{
return Json("Success", JsonRequestBehavior.AllowGet);
}
Вы передаете массив объекта, как вы можете разобрать его в строке.
Попробуй это
Создайте класс с теми же свойствами, которые вы хотите передать.
public class Test
{
public int Param1{get;set;}
public int Param2{get;set;}
public int Param3{get;set;}
}
Jquery
var Tests= []
var Test={"Param1": 1, "Param2": 2, "Param3": 3}
Tests.push(id)
var Test={"Param1": 3, "Param2": 2, "Param3": 6}
Tests.push(id)
$.getJSON("/Controller/Action1",
{
Tests: JSON.stringify(Tests)
}
, function (data) {
});
public JsonResult Action1(IList<Test> Tests)
{
return Json("Success", JsonRequestBehavior.AllowGet);
}
Для вашего действия попробуйте использовать FormCollection, чем просмотреть коллекции Key и Item
public JsonResult Action1(FormCollection ids)
{
//ids["Param1.[0]"] <--Just off the top of my head, I think this is what the key name would be.
//ids.AllKeys <--Use this to see the actual key names.
}