【问题标题】:ASP.NET MVC - Javascript array always passed to controller as nullASP.NET MVC - Javascript 数组始终作为 null 传递给控制器
【发布时间】:2010-04-22 01:18:28
【问题描述】:

我在将 javascript 数组传递给控制器​​时遇到了一些问题。我的视图上有几个复选框,当一个复选框被选中时,它的 ID 将被保存到一个数组中,然后我需要在控制器中使用该数组。代码如下:

查看:

<script type="text/javascript">
        var selectedSearchUsers = new Array();
        $(document).ready(function () {
            $("#userSearch").click(function () {
                selectedSearchUsers.length = 0;
                ShowLoading();
                $.ajax({
                    type: "POST",
                    url: '/manage/searchusers',
                    dataType: "json",
                    data: $("#userSearchForm").serialize(),
                    success: function (result) { UserSearchSuccess(result); },
                    cache: false,
                    complete: function () { HideLoading(); }
                });
            });
            $(".userSearchOption").live("change", function () {
                var box = $(this);
                var id = box.attr("dataId");

                var checked = box.attr("checked");

                if (checked) {
                    selectedSearchUsers.push(id);
                }
                else {
                    selectedSearchUsers.splice(selectedSearchUsers.indexOf(id), 1);
                }
            });
            $("#Send").click(function () {
                var postUserIDs = { values: selectedSearchUsers };
                ShowLoading();
                $.post("/Manage/ComposeMessage",
                postUserIDs,
               function (data) { }, "json");
            });
    });
</script>

单击“发送”按钮时,我想将 selectedSearchUsers 传递给“ComposeMessage”操作。这是动作代码:

public JsonResult ComposeMessage(List<String> values)
        {
            //int count = selectedSearchUsers.Length;
            string count = values.Count.ToString();
            return Json(count);
        }

但是,列表值始终为空。知道为什么吗?

非常感谢。

【问题讨论】:

标签: javascript jquery asp.net-mvc arrays


【解决方案1】:

您可以尝试将控制器的操作方法更改为:

[HttpPost]
public JsonResult ComposeMessage(string values) 
{
    JavaScriptSerializer jass = new JavaScriptSerializer; 
    AnyClass myobj = jass.Deserialize<AnyClass>((string)values);
    ...
    ... 
}

我相信您必须将 JSON 数据作为字符串输入并进行转换 手动。希望能帮助到你。干杯。

【讨论】:

  • 感谢 Jay,我已将参数更改为不使用 Array。
猜你喜欢
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多