微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 ajax 调用中的数组传递给控制器​​,控制器中的数组为空

如何解决将 ajax 调用中的数组传递给控制器​​,控制器中的数组为空

谁能建议我在这里需要更改什么?

我从包含“已更改”类的元素中获取类,我获取的类包含我想传递给控制器​​方法的 id。

当我查看网络选项卡时,我可以在有效负载中看到我想要的数据,它看起来像这样:

{"list":["GroupId-1","SubGroupId-2","changed"]}

但是当我在控制器上放置断点时,列表为空。

这是我在控制器方法中期望的类:

public class MemberGroups
{
    public string GroupId { get; set; }
    public string SubGrouId { get; set; }
    public string Status { get; set; }
}

用于保存的javascript

function Savechanges() {
        var spans = document.getElementsByClassName("changed");
        var list = [];

        $.each(spans,function (key,value) {
                $.each(value.classList,value) {
                        list.push(value);
                    });
            });
        var dataToPost = JSON.stringify({ list: list });

        $.ajax({
            url: "/umbraco/ApI/OrganisationMemberGroupsDashboardApi/UpdateMemberToGroup",data:  JSON.stringify({ list }),type: "POST",contentType: "application/json; charset=utf-8",// specify the content type
        })
            .done(function (data) {
             
            });
    }

控制器

public string UpdateMemberToGroup( List<MemberGroups> list)
{
    // save records
}

跨度是动态创建的并添加到树视图中。当它们被拖放时,所有类都被删除,然后将“更改”类与 id 类一起添加,因此我只将需要的类传递给控制器​​

var s = document.createElement('span');
s.classList.add('node-facility');
s.classList.add('ui-droppable');
s.classList.add('GroupId-' + value.GroupId);
s.classList.add('SubGroupId-0');
s.id=('GroupId-' + value.GroupId);
s.appendChild(document.createTextNode(value.GroupName));

解决方法

此变体已使用 postman body json 进行测试 - ["GroupId-1","SubGroupId-2","已更改"]

将您的 ajax 数据更改为:

data:  list,

和您的控制器操作:


public string UpdateMemberToGroup([FromBody] []string list)
{
var memberGroups = new MemberGroups
{
    GroupId =list[0],SubGrouId =list[1],Status =list[2]
};
    // save records
}

此变体在邮递员中使用 {"GroupId":"GroupId-1","SubGroupId": "SubGroupId-2","Status":"changed"}

你可以把代码放在javascript中:

var data={GroupId:list[0],SubGroupId:list[1],Status:list[2]}

......
....

data:data,.....

在这种情况下您的控制器操作:

public string UpdateMemberToGroup([FromBody] MemberGroups memberGroups)
{
    // save records
}

而且我不知道您使用的是哪个版本的 MVC,但对于某些版本而不是 [FromBody],最好使用 [FromForm] 或根本不使用任何东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。