Javascript: передать сложный объект моему контроллеру (asp ядро) - PullRequest
0 голосов
/ 19 июня 2020

Попытка отправить объект моему контроллеру:

$.ajax({
            type: "POST",
            url: '/Groups/Invite',
            contentType: "application/json",
            data: JSON.stringify(UserInvited),
            dataType: "json",
            success: function () {},
            error: function (xhr, status, error) {}
        });

В режиме отладки мои данные:

{"Id": "47", "Guest": [{" Ключ ":" "," Псевдо ":" Lolo01500 "," Del ": false," Добавить ": true}]}

Мое действие в контроллере:

[HttpPost, ActionName("Invite")]
public IActionResult Invite(GroupInviteVM groupInviteVM)
{
  // TODO
  return Json(true);
}

И цели классы объектов:

public class ItemInvite
{
    public string Key { get; set; }
    public string Pseudo { get; set; }
    public bool Add { get; set; }
    public bool Del { get; set; }
}

public class GroupInviteVM
{
    public int Id { get; set; }
    List<ItemInvite> Guest { get; set; }

    public GroupInviteVM()
    {
        Guest = new List<ItemInvite>();
    }
}

При выполнении обновляется только Id ...

Кто-нибудь может мне помочь?

TY

1 Ответ

0 голосов
/ 24 июня 2020

При выполнении обновляется только Id ...

Это потому, что свойство Guest не является publi c. Добавьте модификатор publi c, как показано ниже:

public class GroupInviteVM
{
    public int Id { get; set; }
    public List<ItemInvite> Guest { get; set; }//change this

    public GroupInviteVM()
    {
        Guest = new List<ItemInvite>();
    }
}

Вся демонстрация:

Просмотр:

<script>
    var UserInvited = {
        Id: 1,
        Guest: [{
            Key: "aaa",
            Pseudo: "asd"
        }]
    };
    console.log(JSON.stringify(UserInvited));
    $.ajax({
        type: "POST",
        url: '/Groups/Invite',
        contentType: "application/json",
        data: JSON.stringify(UserInvited),
        dataType: "json",
        success: function () { },
        error: function (xhr, status, error) { }
    });
</script>

Контроллер:

[HttpPost, ActionName("Invite")]
public IActionResult Invite([FromBody]GroupInviteVM groupInviteVM)
{
    // TODO
    return Json(true);
}
...