Передать строковый массив в действие - PullRequest
0 голосов
/ 04 октября 2018

Я не могу передать массив строк через HTTP, чтобы получить мое действие.Мой HTTP GET делает это:

http://www.example.com/Add?id=1&id=2&id=3&id=4

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

[HttpGet]
public ActionResult Add(params string[] id) 
{ 
    // I expect this:
        // id = string[]{"1","2","3","4"}

    // I get this: 
        // id always comes in as {string[1]}... aka. string array with one element
        // id[0] is "" - aka. the first element is always an empty string
}

Возможные способы получения моего HTTP Get:

  1. http://www.example.com/Add?id=1
  2. http://www.example.com/Add?id=1&id=2&id=3&id=4
  3. http://www.example.com/Add/1

Как мне справиться с этим в одном методе контроллера?

Другие вещи, которые я пробовал:

  • Перегрузка метода (вы не можете перегружать методы контроллера)
  • Передача идентификаторов в виде строки через запятую, которая работала, но хакерский

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Это может не ответить на ваш вопрос, так как вас может не заинтересовать решение jQuery-Ajax.Но те, кто может прийти сюда в поисках ответа, вот как я его добился:

Jquery & Ajax:

$.ajax({
    url: '/Controller/Method?id=2&id=3',
    type: 'GET',
    datatype: "json",
    processData: false,
    contentType: "application/json; charset=utf-8",
    async: true,
    success: function(response){},
    error: function(response){}
});

C # Контроллер:

[HttpGet]
public ActionResult ExportRecords(string[] id)
{
    foreach(string value in  id)
    {
        System.Diagnostics.Debug.Writeline(value);
    } 
     return View();
}
0 голосов
/ 04 октября 2018

Вы можете использовать коллекцию Request.QueryString .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...