这有效:
[HttpPost]
public ActionResult Slots(Slots slots, ICollection<int> jobNos)
{
if (!ModelState.IsValid)
return View(new SlotsViewModel() { JobNos = jobNos, Slots = slots });
//
// Do stuff
//
return View("MyResults", jobNos);
}
public ActionResult MyResults(ICollection<int> jobs)
{
return View(jobs);
}
然而,这不起作用。
[HttpPost]
public ActionResult Slots(Slots slots, ICollection<int> jobNos)
{
if (!ModelState.IsValid)
return View(new SlotsViewModel() { JobNos = jobNos, Slots = slots });
//
// Do stuff
//
return RedirectToAction("MyResults", new { jobs = jobNos });
}
public ActionResult MyResults(ICollection<int> jobs)
{
return View(jobs);
}
当我重定向到新操作时,ICollection作业应该是空的,当它应该有一个计数&gt; 0
任何人都知道为什么重定向会清空集合?
答案 0 :(得分:3)
RedirectToAction
会向客户端浏览器返回302响应,因此浏览器会对指定的网址进行新的 GET 请求。
在这种情况下,如果您确实想要在这两个(无状态)HTTP请求之间传递集合,则需要一些临时存储机制,如TempData
TempData["Jobs"] =jobNos ;
return RedirectToAction("MyResults");
在其他ActionMethod中读取它
public ActionResult MyResults()
{
var model=TempData["Jobs"] as List<int>;
return View(model);
}
TempData
使用场景后面的Session
对象来存储数据。但是一旦读取数据,数据就会终止。