我有这个方法AddSection
public ActionResult AddSection(string code, ArrayList added)
{
ArrayList list = added;
if (list == null) list = new ArrayList();
list.Add(Request["selected_section"]);
return RedirectToAction("Details", new { code = code, added = list });
}
哪个重定向到详细信息:
public ActionResult Details(string code, ArrayList added)
{
if (added == null) added = new ArrayList();
return View(added);
}
现在在Details操作中(如果它是从AddSection呈现的),“添加的”ArrayList永远不应该为null,因为它在AddSection中被初始化并传递给Details。 当我调试程序“添加”时,即使在AddSection之后呈现的操作,Details中的ArrayList也为null。
有人可以解释原因吗?
答案 0 :(得分:1)
就像LukeP所说,它看起来像是一个副本,因为正如其他问题/答案所述,只有原始类型可以传递,而不是复杂类型。
要修改代码,您可以执行此操作
public ActionResult AddSection(string code, ArrayList added) {
ArrayList list = added;
if (list == null) list = new ArrayList();
list.Add(Request["selected_section"]);
TempData["ListOfValues"] = list;
return RedirectToAction("Details", new { code = code});
}
public ActionResult Details(string code) {
var added = (ArrayList)TempData["ListOfValues"];
if (added == null) added = new ArrayList();
return View(added);
}