gpt4 book ai didi

javascript - 将 Javascript 数组发送到 Controller 并在另一个 URL 中呈现 View 结果

转载 作者:搜寻专家 更新时间:2023-10-31 23:25:23 24 4
gpt4 key购买 nike

我已经尝试了 4 天但没有成功,我是一名初级开发人员,所以这就是原因。

上下文:

我有一个 flexigrid在我显示从数据库收集的数据的地方,在一个非常特殊的列中,有一个复选框,我创建了一个 javascript 函数,当您单击该复选框并将其存储在 时获取实体 Id javascript array,我想发送到 ActionResult

问题:

我可以通过使用 Ajax,但我无法呈现 ActionResult View ,我得到 404。尝试使用 @Html.ActionLink 但没有重新调整 javascript 数组。那么我如何将 javascript 数组发布到 Controller 并遵循该 Controller 流程,例如使用另一个 URL 呈现另一个 View ?

Javascript 数组:

var arrayId = new Array();

查看:

<a href="@Url.Action("SomeAction", "SomeController", new { area = "SomeArea", arrayId = arrayId })">

Controller :

public ActionResult SomeAction(object[] arrayId)
{
//some code

return View("AnotherView");
}

解决方法:

  • Ajax,如果我可以在另一个 URL 中呈现 View 。

  • HTML '< Form >',如果我可以传递 javascript 数组。

  • 或者 C# Helper,也许可以将 javascript 数组传递给 View 模型,但我不知道该怎么做。

  • 局部 View ?不是解决方案。

最佳答案

...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>

让我们看看这里发生了什么:

  • 对于从数据库返回的每一项,我们都有一个复选框。注意name 属性,这很重要
  • 所有内容都在指向我们第二个操作的表单中。这是将接收阵列的那个
  • 提交表单后,我们遍历每个选中的复选框以将名称更改为类似arrayId[0] 的名称。这是必需的。 ASP.NET 使用名称 attr 将接收到的数据绑定(bind)到操作期望的内容。如果它是一个集合(如列表或数组),名称还必须包含一个基于 0 的索引器。这就是我们在发布表单之前所做的事情。

将收到此帖子的操作如下所示:

[HttpPost]
public ActionResult SomeAction(string[] arrayId)
{
return View(arrayId);
}

关于javascript - 将 Javascript 数组发送到 Controller 并在另一个 URL 中呈现 View 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32156835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com