В приложении MVC4 в Create
(post) action Я хочу передать int type list для просмотра, если возникла ошибка. А потом, оттуда передать его другому методу в том же контроллере с ajax-сообщением. Итак, TempData
, ViewData
и ViewBag
мне не помогают.Как передать список int из действия для просмотра, затем из представления в метод в mvc 4?
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
зрения. Он имеет значение здесь, я проверил. Но отсюда следует передать этот список GetTreeData
метода с помощью Ajax поста:
@{
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})», –