用户在MVC中完成表单并且正在进行后期操作后,我正在尝试将它们重定向回另一个模型中的另一个视图。
EG。此表单是主表单的子表单,一旦用户完成此子表单,我希望他们返回主表单。
我认为以下可能已经做到了,但它无法识别模型......
//send back to edit page of the referral
return RedirectToAction("Edit", clientViewRecord.client);
任何建议都更受欢迎......
答案 0 :(得分:1)
你无法按照自己的方式去做。您正试图在网址中传递一个复杂的对象,但这并不起作用。执行此操作的最佳方法是使用路由值,但这需要您专门构建路由值。由于所有这些工作,以及路由值将显示在URL上的事实,您可能希望这个简单尽可能简洁。我建议只将ID传递给对象,然后用它来查找目标操作方法中的对象。
例如:
return RedirectToAction("Edit", new {id = clientViewRecord.client.ClientId});
以上假设您使用带有id参数的标准MVC路由。并且该客户端是一个复杂的对象,而不仅仅是id,在这种情况下,您只需使用id = clientViewRecord.client
答案 1 :(得分:0)
重定向实际上只是一个简单的响应。它具有状态代码(通常为302或307)和Location
响应标头,其中包含您要重定向到的URL。一旦客户端收到此响应,他们通常会通过GET请求该URL。重要的是,这是一个全新的请求,除了默认情况下通常用于骑行的内容之外,客户端不会包含任何数据。
长和短,您无法使用“有效负载”重定向。这不是HTTP的工作方式。如果您需要重定向后的数据,则必须以某种方式保留它,无论是在数据库中还是在用户的会话中。
答案 2 :(得分:0)
如果您打算使用该模型重定向到某个操作。我建议使用tempdata将模型传递给action方法。
TempData["client"] = clientViewRecord.client;
return RedirectToAction("Edit");
public ActionResult Edit ()
{
if (TempData["client"] != null)
{
var client= TempData["client"] as Client ;
//to do...
}
}