2

我有一个 asp.net mvc4 应用程序,其中有一个操作X

 impaire_target = u.Get_Impaire_List().Find(x => x.id_paire == identificateur);
 Session["id_paire"] = a;
 return RedirectToAction("Page2","Pages",impaire_target );

那个行动Page2

  public ActionResult Page2(Impaire impa)
        {
            try
            {
                User u = (User)Session["user"];
                if (u.Login == null) RedirectToAction("Index", "Home");
            }
            catch { return RedirectToAction("Index", "Home"); }
            if (impa == null)
            {
                return View();
            }
            return View(impa);
        }

问题是参数impa始终为 null 。即使我尝试替换return RedirectToAction("Page2","Pages",impaire_target );return RedirectToAction("Page2","Pages",new{ impa=impaire_target} );我得到了相同的结果。

这个问题的原因是什么?

4

2 回答 2

3

您不能将 ModelBinding 与 一起使用RedirectToAction,因此没有复杂类型作为匿名对象。尝试将对象转换为RouteValueDictionary

return RedirectToAction("Page2", "Pages", new RouteValueDictionary(impaire_target));

旁注:您始终必须返回RedirectToAction否则它将不起作用。

于 2013-10-08T20:12:16.493 回答
1

您应该使用 Session 或 TempData 在控制器操作之间传递复杂数据。这里对其进行详细描述。

例子:

impaire_target = u.Get_Impaire_List().Find(x => x.id_paire == identificateur);
TempData["impa"] = impaire_target;
Session["id_paire"] = a;
return RedirectToAction("Page2","Pages");

那个行动Page2

    public ActionResult Page2()
    {
        Impaire impa = TempData["impa"] as Impaire;
        try
        {
            User u = (User)Session["user"];
            if (u.Login == null) RedirectToAction("Index", "Home");
        }
        catch { return RedirectToAction("Index", "Home"); }
        if (impa == null)
        {
            return View();
        }
        return View(impa);
    }
于 2013-10-08T20:14:45.603 回答