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 は null になることはありません。これは、AddSection で初期化されて Details に渡されるためです。プログラムをデバッグすると、AddSection の後にアクションがレンダリングされた場合でも、Details の「追加された」ArrayList が null になります。

誰かが理由を説明できますか?

4

1 に答える 1

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