【发布时间】:2013-07-25 05:32:17
【问题描述】:
在 Create(post) 操作中的 MVC4 应用程序中,我想通过 int 类型列表 来查看是否发生错误。然后,从那里通过 ajax post 将其传递给同一控制器中的其他方法。所以,TempData、ViewData 和 ViewBag 不要帮助我。
public ActionResult Create(CreateModel model)
{
if(hasCustomError)
{
List<int> selectedItems = new List<int>() { 1, 2, 8 }; //for example.
ViewBag.VB = selectedItems;
//ViewData["VD"] = selectedItems;
//TempData["TD"] = selectedItems;
return View(model);
}
return RedirectToAction("Index");
}
在return View(model); 之后,selectedItems 的列表传递给Create.cshtml 视图。我检查过它在这里有价值。但是从这里我应该通过 ajax 帖子将该列表传递给 GetTreeData 方法:
@{
if (ViewBag.VB != null)
{
TempData["SelectedItems"] = ViewBag.VB as List<int>;
}
}
$("#myTree").jstree({
json_data: {
"ajax": {
url: "@Url.Action("GetTreeData", "MyController")",
type: "POST",
dataType: "json",
contentType: "application/json charset=utf-8"
}
},
checkbox: {
real_checkboxes: true,
checked_parent_open: true
},
plugins: ["themes", "json_data", "ui", "checkbox"]
});
在MyController 中,在GetTreeData 方法中TempData["SelectedItems"] 是null。
public string GetTreeData()
{
List<int> selecteds = null;
if (TempData["SelectedItems"] != null)
{
selecteds = TempData["SelectedItems"] as List<int>;
TempData["SelectedItems"] = null;
}
......................................
}
我对所有(TempData、ViewData 和 ViewBag)都进行了尝试。没有任何改变。
如何将该列表从操作传递到视图,然后从该视图传递到方法?
【问题讨论】:
-
我找到了解决方案。首先,我将 int 列表转换为字符串列表为 "1,2,8",然后,url: "@Url.Action("GetTreeData", "MyController", new { param = stringList })",
标签: asp.net-mvc asp.net-mvc-4 asp.net-ajax viewbag tempdata