我现在尝试了4天没有成功,我是一名初级开发人员,所以这就是原因.
内容:
我有一个flexigrid,其中显示了从数据库收集的数据,在一个非常特殊的列中,有一个复选框,我创建了一个javascript函数,当您单击该复选框时,它会获取实体ID并将其存储在javascript数组中发送到ActionResult.
问题:
我可以使用Ajax进行传递,但无法呈现ActionResult视图,但我得到404.尝试使用@ Html.ActionLink,但是不重新协调javascript数组.
因此,如何将javascript数组发布到控制器并遵循该控制器流程,例如使用另一个URL渲染另一个视图,该怎么做?
Javascript数组:
var arrayId = new Array();
视图:
<a href="@Url.Action("SomeAction", "SomeController", new { area = "SomeArea", arrayId = arrayId })">
控制器:
06002
解决方法:
> Ajax,如果可以在另一个URL中呈现视图.
> HTML’<如果可以传递javascript数组,则为>‘表格.
>或C#Helper,也许将javascript数组传递给视图模型,但是我不知道该怎么做.
> PartialView?没办法.
解决方法:
…that I want to send to a ActionResult.
我相信您可能在这里有些困惑.在ASP.NET MVC中,任何接收来自AJAX或完整请求的请求的操作都是动作.该操作的结果(例如JSON响应或整页结果)是ActionResult.
总是像请求>那样思考响应.请求由您的操作处理,响应是操作输出的内容.
现在,您的问题.将此页面视为第一个页面,该页面从数据库输出ID:
<form method="post" action="/home/someaction">
<ul>
<li><label><input type="checkBox" name="arrayId" value="1" />1</label></li>
<li><label><input type="checkBox" name="arrayId" value="2" />2</label></li>
<li><label><input type="checkBox" name="arrayId" value="3" />3</label></li>
<li><label><input type="checkBox" name="arrayId" value="4" />4</label></li>
</ul>
<button>Post array to action SomeAction</button>
</form>
<script type="text/javascript">
$(function(){
$('form').on('submit', function () {
$('checkBox:checked').each(function (ix, el) {
$(el).attr('name', 'arrayId[' + ix + ']');
});
});
});
</script>
让我们看看这里发生了什么:
>对于数据库返回的每个项目,我们都有一个复选框.注意名称attr,这很重要
>一切都在指向我们第二个动作的表格内.这是将接收数组的那个
>提交表单后,我们将遍历每个选中的复选框,以将名称更改为arrayId [0].这是必需的. ASP.NET使用名称attr将接收到的数据绑定到操作预期的操作.如果它是一个集合(如列表或数组),则该名称还必须包括一个基于0的索引器.这就是我们在发布表单之前所做的.
将收到此帖子的操作如下所示:
[HttpPost]
public ActionResult SomeAction(string[] arrayId)
{
return View(arrayId);
}