我很好奇这是如何工作的。在 MVC 中,您可以调用 View() 并将模型作为参数传递,但 RedirectToAction(至少是其化身之一)采用“routeValues”对象,这似乎是最接近的匹配项。
如果您的模型在此参数中传递,该模型类型是否可以在后续操作方法中使用?或者在某些情况下是否存在可能妨碍准确翻译的警告?
我很好奇这是如何工作的。在 MVC 中,您可以调用 View() 并将模型作为参数传递,但 RedirectToAction(至少是其化身之一)采用“routeValues”对象,这似乎是最接近的匹配项。
如果您的模型在此参数中传递,该模型类型是否可以在后续操作方法中使用?或者在某些情况下是否存在可能妨碍准确翻译的警告?
如果您需要在重定向后将一些复杂的对象传递给操作,您可能希望使用 Session 或 TempData:
ASP.NET MVC TempData 字典用于在控制器操作之间共享数据。TempData 的值一直持续到它被读取或当前用户的会话超时
默认情况下,TempData 使用 Session 来保存信息,但是,与 MVC 的大部分内容一样,这是一个可扩展点,如果您愿意,您可以在其中插入基于 Cookie 的提供程序。
您不能在其中传递模型对象,但可以传递将映射到您重定向到的操作中的模型的各个属性。
这通过构建 url 以重定向到使用属性和接收操作中的模型绑定器来工作。
Redirect...
方法会导致客户端往返行程,所以 - 不,该模型将不可用。
我认为这就是你想要的:
将模型保存在 Tempdata 中
RequestModel rq = new RequestModel()
....assign something to your model..
TempData["request"] = rq;
return Redirect("RequestAcknowledgement");
现在为您要重定向到的视图创建一个操作结果,并将您的 TempData 传递回模型。然后将模型返回到视图。
public ActionResult RequestAcknowledgement()
{
RequestsModel request = (RequestsModel)TempData["request"];
return View(request);
}