ASP.NET MVC - Javascript数组总是作为null传递给控制器

时间:2010-04-22 01:18:28

标签: javascript jquery asp.net-mvc arrays

我在将javascript数组传递给控制器​​时遇到了一些问题。我的View上有几个复选框,当选中一个复选框时,它的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);
        }

但是,List值始终为null。知道为什么吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

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

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

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