如何使用Ajax将Array传递给操作.视图中的ActionLink

本文关键字:视图 操作 ActionLink Ajax 何使用 Array | 更新日期: 2023-09-27 17:59:16

我正在使用剃须刀并将数组传递给控制器。数组包含字符串类型。视图中的示例阵列:

@{
.
.
.
   string[] menustatus = ViewBag.MENUS;
}
.
.
.
@Ajax.ActionLink("linkname",ActionName, ControllerName, new { status = menustatus }, new AjaxOptions { HttpMethod = "Post" }, null)

我的控制器是:

public ActionResult ActoinName(params string[] status)
{
}

status变量包含值"system.string[]"。我期望数组值​​传递给动作。

如何使用Ajax将Array传递给操作.视图中的ActionLink

不能像这样在ActionLink中传递数组。因为默认情况下mvc.net调用ToString方法并返回system.string[]。但你可以使用两种替代方法。首先是在发送之前加入字符串数组,然后(在控制器中)将它们拆分为数组,如下所示:

... new { status = String.Join(";", menustatus)) ...

在视图中。控制器中的这个:

public ActionResult ActoinName(string allStatus) {
  var status = allStatus.Split(new[] {";"});

或者您可以将ajax post与jquery一起使用:

<a href="javascript:ajaxCall()" id="ajaxCall">linkAjax</a>
<script>
    function ajaxCall() {
        $.ajax({
            traditional: true,
            type: "POST",
            url: "@Url.Action("ActionName")",
            data: {status: [
                @foreach (var st in menustatus)
                {
                    @:'@st', 
                }
                ]
            },
            success: function(data) { /*doing something*/ }
        });
    };
</script>