Ajax调用未将数组传递给控制器​​操作

时间:2018-07-14 07:30:13

标签: asp.net ajax asp.net-mvc asp.net-ajax

我正在将数组变量传递给控制器​​。 来自ajax调用的数组包含数据,但是在调用控制器后,它显示count = 0。

   var url = '@Url.Action("UserRoleCompany_AddUserAccess", "UserRoleCompany")';

        $.ajax({
            url: url,
            data: { userIDs: userIDs, Organisation: Organisation, RoleName: RoleName, userIDsLength: userIDsLength, UserStatus: UserStatus },
            cache: false,
            type: "POST",
            success: function (data) {
                location.reload(true);
            },
            error: function (reponse) {
                alert("error : " + reponse);
            }
        });

下面的控制器代码,

  public ActionResult UserRoleCompany_AddUserAccess(List<int> userIDs, string Organisation, string RoleName, int userIDsLength,int UserStatus)
    {
        LMTUsage objLMT = new LMTUsage();
        LMTDAL objLMTDAL = new LMTDAL();

        objLMTDAL.UserRoleCompany_AddUserAccess(Organisation, RoleName, userIDsLength, UserStatus);

        return RedirectToAction("Index");
    }

下面是供您参考的屏幕截图, enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

您不能在ajax中将数组作为参数传递,可以将userIDs转换为json字符串或将它们组合为字符串,然后传递到控制器端。

更多详细信息,请访问Why the array will not send through the ajax call?

答案 1 :(得分:0)

@lucumt

我已经尝试过使用表进行同样的操作-从表中选择多行并将其发送到控制器,并且工作正常。

请在下面检查并告知我。

    var url = '@Url.Action("UserRoleCompany_UpdateUserAccess", "UserRoleCompany")';

        $.ajax({
            url: url,
            data: { Ids: checkedIds, newUserStatus: UserStatus },
            cache: false,
            type: "POST",
            success: function (data) {
                location.reload(true);
            },
            error: function (reponse) {
                alert("error : " + reponse);
            }
        });

控制器

 public ActionResult UserRoleCompany_UpdateUserAccess(List<int> Ids, int newUserStatus)
    {
        LMTUsage objLMT = new LMTUsage();
        LMTDAL objLMTDAL = new LMTDAL();

        string userRoleIds = String.Join(",", Ids);

        objLMTDAL.UserRoleCompany_UpdateUserAccess(userRoleIds, newUserStatus);

        return RedirectToAction("Index");
        //return RedirectToAction("Index", "UserRoleCompany");
    }

您可以在下面的屏幕截图中查看实际情况, enter image description here enter image description here