我很好奇这是如何运作的。在MVC中,您可以调用View()并将模型作为参数传递,但RedirectToAction(至少其中一个版本)采用“routeValues”对象,该对象似乎是最接近的匹配。
如果您的模型在此参数中传递,那么该模型类型是否可用于后续操作方法?或者是否存在可能妨碍在某些情况下准确翻译的警告?
答案 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)
我认为这就是你想要的:
将模型保存在Tempdata
中 RequestModel rq = new RequestModel()
....assign something to your model..
TempData["request"] = rq;
return Redirect("RequestAcknowledgement");
现在为要重定向到的视图创建一个Action Result,并将TempData传递回模型。然后将模型返回到视图。
public ActionResult RequestAcknowledgement()
{
RequestsModel request = (RequestsModel)TempData["request"];
return View(request);
}