7

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

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

4

4 回答 4

5

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

来自“什么是 ASP.NET MVC TempData

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

默认情况下,TempData 使用 Session 来保存信息,但是,与 MVC 的大部分内容一样,这是一个可扩展点,如果您愿意,您可以在其中插入基于 Cookie 的提供程序

于 2012-12-19T17:02:11.800 回答
4

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

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

于 2012-12-19T16:50:38.150 回答
2

Redirect...方法会导致客户端往返行程,所以 - 不,该模型将不可用。

于 2012-12-19T16:47:49.293 回答
0

我认为这就是你想要的:

  1. 将模型保存在 Tempdata 中

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

     public ActionResult RequestAcknowledgement()
        {
           RequestsModel request =  (RequestsModel)TempData["request"];
    
           return View(request);
        }
    
于 2017-05-13T19:42:57.797 回答