将模型传递给RedirectToAction()

时间:2012-12-19 16:43:12

标签: asp.net-mvc redirecttoaction

我很好奇这是如何运作的。在MVC中,您可以调用View()并将模型作为参数传递,但RedirectToAction(至少其中一个版本)采用“routeValues”对象,该对象似乎是最接近的匹配。

如果您的模型在此参数中传递,那么该模型类型是否可用于后续操作方法?或者是否存在可能妨碍在某些情况下准确翻译的警告?

4 个答案:

答案 0 :(得分:5)

如果您需要在重定向后将某些复杂对象传递给某个操作,您可能想要使用Session或TempData:

来自“What is ASP.NET MVC TempData

  

ASP.NET MVC TempData字典用于在之间共享数据   控制器动作。 TempData的值一直存在,直到被读取或   直到当前用户的会话超时

默认情况下,TempData使用Session来保存信息,但是,与大部分MVC一样,这是一个可扩展点,如果您愿意,可以插入Cookie-based provider

答案 1 :(得分:4)

您无法在其中传递模型对象,但您可以传递将映射到您重定向到的操作中的模型的各个属性。

这可以通过构建url来重定向到使用属性,以及接收操作中的模型绑定器。

答案 2 :(得分:2)

Redirect...方法会导致客户端返回,因此 - 不,该模型将无法使用。

答案 3 :(得分:0)

我认为这就是你想要的:

  1. 将模型保存在Tempdata

            RequestModel rq = new  RequestModel()   
            ....assign something to your model..
            TempData["request"] = rq;
    
            return Redirect("RequestAcknowledgement");
    
  2. 现在为要重定向到的视图创建一个Action Result,并将TempData传递回模型。然后将模型返回到视图。

     public ActionResult RequestAcknowledgement()
        {
           RequestsModel request =  (RequestsModel)TempData["request"];
    
           return View(request);
        }