Как получить массив значений, переданных через метод .getJSON в аргументах метода контроллера

0

У меня ниже кода 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.

Заранее спасибо!!

  • 0
    Я попытался List <string>, но значения являются нулевыми. Не повезло.
Теги:
asp.net-mvc-3

3 ответа

0

вы пытаетесь отправить коллекцию объектов контроллеру, попробуйте выполнить следующее:

 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);

        }
0

Вы передаете массив объекта, как вы можете разобрать его в строке.

Попробуй это

Создайте класс с теми же свойствами, которые вы хотите передать.

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);

    }
  • 0
    Спасибо, Нитин.
0

Для вашего действия попробуйте использовать 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.
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню