如何使用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[]"。我期望数组值传递给动作。
不能像这样在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>