Asp. net core mvc отправить массив int в контроллер - PullRequest
0 голосов
/ 16 июня 2020

Итак, я делаю Ajax, а затем у меня есть этот фрагмент кода (JavaScript):

document.getElementById("HidenLink").style.visibility = "visible";
document.getElementById("HidenLink").innerHTML = "I have found " + data.pocetfound + " cases";
var arrStr = encodeURIComponent(JSON.stringify(data.listfound));
var Path = " ";
switch ('@ViewBag.TableName') {
         case "MYCASE":
              Path = "PATJ/PATHH"
         break;
       }
document.getElementById("HidenLink").href = Path + '/IDArr?array=' + arrStr;

Затем я ожидаю получить int [] IDArr в моем контроллере:

[HttpGet]
public async Task<IActionResult> MYRIGHTPATH(int? id, int[] IDArr)
{
  try {
    /*TESTS*/
     foreach (int i in IDArr) //Does not get executed
      {
         Console.WriteLine(i);
      }
        /*TESTS*/
   }catch (Exception e) {
                return RedirectToAction("Error", new { error = e });
            }
        }

Моя конечная точка:

app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });

Моя проблема в том, что контроллер не получает массив, который я пытаюсь отправить.

Спасибо за помощь!

1 Ответ

2 голосов
/ 16 июня 2020

ожидайте получить int [] IDArr в моем контроллере

[HttpGet]
public async Task<IActionResult> MYRIGHTPATH(int? id, int[] IDArr)`

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

?IDArr=1&IDArr=2

Или

?IDArr[0]=1&IDArr[1]=2

Результат теста

enter image description here

Для получения дополнительной информации о привязке модели проверьте это c : https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-3.1#collections

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