我有一个javascript数组的对象,我试图发送到我的新视图。我不想使用AJAX - 这是一个新页面。我似乎无法弄清楚如何将数组发送到我的控制器动作。
我有一个动作会将UploadFile
对象返回到我的视图中,该动作会以javascript的形式添加到数组中。当用户尝试继续“审核”结果时,我将该对象数组发送到新页面。
public ActionResult Review(List<UploadFile> model)
{
return View();
}
我仍然尝试使用AJAX,但我遇到了两个问题:1)我想要一个新页面,我不希望它停留在同一页面上,2)模型仍为空。
$('.js_btn-review').click(function () {
$.ajax({
url: '/Document/Review',
data: documents,
type: 'GET'
});
});
我不知道该怎么做 - 我知道我以前做过,但我不记得我是怎么做到的。我甚至尝试过设置元素并序列化:
$('.js_btn-review').click(function () {
$("#documents").val(documents);
$.ajax({
url: '/Document/Review',
data: $("#documents").serialize(),
type: 'GET'
});
});
我在这里做错了什么?
答案 0 :(得分:0)
由于你没有陈述js变量文档的结构,我假设它只是一个UploadFiles数组。有点像:
var documents = [];
for (var i = 0; i < 10; i++) {
var d = {
id: i,
title: i.toString()
};
documents.push(d);
}
然后你通过ajax发送和发送。这不起作用,因为文档没有容器,因此GET的URL看起来像/ Document / Review?undefined =&amp; undefined =&amp; undefined =&amp; undefined =&amp;
将其更改为
var data = {
model: documents
};
$('.js_btn-review').click(function () {
$.ajax({
url: '/Home/Review',
data: data,
type: 'GET'
});
});
应该填充模型。
对于视图更改,您需要执行除.ajax以外的操作并获取响应。它不会改变页面。
答案 1 :(得分:0)
参数名称应与要发送的数据的名称相同,因此,如果数据对象称为文档,则控制器中的参数应具有以下相同的名称。
public ActionResult Review(List<UploadFile> documents)
{
return View();
}
Javascript for that
$('.js_btn-review').click(function () {
$.ajax({
url: '/Document/Review',
data: JSON.stringify( documents ),
type: 'Post'
});
});
答案 2 :(得分:0)
没有AJAX 就像PRG Pattern一样,所以你要张贴表格。
@{
List<UploadFile> list = new List<UploadFile> { ... };
}
@using(Html.BeginForm("Review", "Controller", FormMethod.Post, new { }))
{
for (int i = 0; i < list.Count(); i++)
{
@Html.HiddenFor(m => list[i]);
}
<input type="submit" value="Review" />
}
控制器操作
[HttpPost]
public ActionResult Review(List<UploadFile> list)
{
TempData["Review_list"] = list;
return RedirectToAction("Review");
}
[HttpGet]
public ActionResult Review()
{
var list = TempData["Review_list] as List<UploadFile>;
return View(list);
}
如果您不需要处理服务器上的列表
不要费心回传并将列表保存在javascript中:
sessionStorage
作为JSON <a href="../review">Review</a>
)sessionStorage
检索列表并构建html