发送一个Javascript数组到控制器,并在另一个URL中呈现视图结果
Send a Javascript Array to a Controller And Render View Result in Another URL
我已经尝试了4天没有成功了,我是一个初级开发人员,所以这就是为什么。
背景:
我有一个灵活的网格,我显示从数据库中收集的数据,在一个非常特殊的列,有一个复选框,我创建一个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 })">
控制器:
public ActionResult SomeAction(object[] arrayId) { //some code return View("AnotherView"); }
解决方法:
Ajax,如果我可以在另一个URL中呈现视图
HTML的& lt;
或c# Helper,可能将javascript数组传递给视图模型,但我不知道如何。
PartialView吗?
我相信你可能有一点困惑。在ASP。. NET MVC,任何接收请求,无论是来自AJAX还是完整的请求,都是动作。该操作的结果,如JSON响应或完整页面的结果,是一个ActionResult。…我想发送给ActionResult。
总是把它想象成请求>响应。请求是由操作处理的,响应是操作输出的。
现在,回答你的问题。将此页面视为从DB输出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>
让我们看看这里发生了什么:
- 对于从DB返回的每个项目,我们有一个复选框。注意名称 attr,这很重要
- 所有东西都在指向第二个动作的表单中。它将接收数组 当提交表单时,我们遍历每个选中的复选框以将名称更改为
arrayId[0]
之类的内容。这是必需的。ASP。NET使用名称attr将接收到的数据绑定到操作期望的数据。如果它是一个集合(如列表或数组),则名称还必须包含一个基于0的索引器。这就是我们在发布表单之前所做的。将接收这篇文章的操作看起来像:
[HttpPost]
public ActionResult SomeAction(string[] arrayId)
{
return View(arrayId);
}
通过ajax向服务器发送数据是个好主意,但问题是如何响应用户。一种解决方案是将用户重定向到另一个页面,或者用适当的更改刷新当前页面。这样你就可以使用JavascriptResult了。
return JavaScript("window.location = 'http://www.domain.com/...'");
或
return JavaScript("location.reload(true)");
相关文章:
- 我们如何在不更改url的情况下使用锚点点击从一个页面重定向到另一个页面
- 使用javascript加载并显示来自另一个域的页面,而不显示原始URL
- 将php页面URL中的变量传递给JavaScript和另一个php
- 根据jQuery中的另一个链接更改url
- 将 url 中的一个字符串替换为另一个字符串
- 当数据在另一个URL上更新时,AngularJS是否可以在一个URL上触发$watch
- 如何读取存储在图像的数据src中的URL,并在另一个img控制器的src中设置该URL onclick
- 将json数据发送到另一个url-在您'我从我自己的网址上得到的
- Ajax - 在“成功”之后转到另一个页面,从那里的URL中检索用户ID
- JQuery 验证来自另一个域的 url 不起作用
- 我的变量保存在 URL/位置中,如何从另一个页面读取它
- 通过书签使用来自另一个网站的 url 自动填充文本字段
- 在事件发生时获取元素位置的当前页面 URL,并将该 URL 输出到另一个页面上
- 使用javascript或jquery从另一个表单中使用它所在的URL访问,填写和提交表单
- Javascript 转到 URL 如果用户输入特定数字,则转到另一个 URL
- 仅当从另一个 URL 加载数据时,才会触发另一个插件
- 从另一个域加载 CSS 和 JS 文件,并从一致的 URL 提供资源
- 从另一个域的 iframe 中的代理访问父/原始 URL(同源策略)
- regexp(?) 用于从另一个 URL 中提取 URL
- 已更新:从另一个页面重定向 url 传递参数