【问题标题】:Ajax call not passing arrays to controller actionAjax 调用未将数组传递给控制器​​操作
【发布时间】:2018-07-14 07:30:13
【问题描述】:

我将一个数组变量传递给控制器​​。 来自 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");
    }

下面是截图供参考,

【问题讨论】:

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


    【解决方案1】:

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

    更多详细信息可以在Why the array will not send through the ajax call?找到

    【讨论】:

    • 在答案中查看我上面的评论。
    【解决方案2】:

    @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");
        }
    

    您可以在屏幕截图中查看下面的现场场景,

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多