3

我有这个方法 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 永远不应为空,因为它无论如何都在 AddSection 中初始化并传递给 Details。当我在详细信息中调试程序“添加”的 ArrayList 时,即使在 AddSection 之后呈现的操作也是空的。

有人可以解释为什么吗?

4

1 回答 1

1

就像 LukeP 说的那样,它看起来像一个 dup,因为作为其他问题/答案状态,只能传递原始类型,而不是复杂类型。

要修改您的代码,您可以这样做

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);
}
于 2012-05-13T20:44:21.127 回答