如何将强类型视图模型重定向并传递给另一个操作方法?

LaT*_*TeX 2 asp.net-mvc

我有 2 个控制器:AliceControllerBobController. 每个都包含Index操作方法。视图模型很简单,如下所示:

class Foo{[Required]public int data{get;set;}}
Run Code Online (Sandbox Code Playgroud)

如何将强类型对象从 Alice 传递给 Bob?

class AlliceController: Controller
{

    [HttpPost]
     public ActionResult Index(Foo foo)
     {
         if(ModelState.IsValid)
         {
          // I want to pass foo to Bob's Index. How to do it?
           return RedirectToAction("Index","Bob");
          }
         else    return View();
     }
}
Run Code Online (Sandbox Code Playgroud)

RPM*_*984 5

理论上,您可以使用该RouteValueDictionary参数来RedirectToAction

return RedirectToAction("Index", "Bob", new { param = value });
Run Code Online (Sandbox Code Playgroud)

但是,您不能通过这种类型的重定向传递对象,只能传递可以附加到 GET url 的原始类型(int、string 等)。

请改用TempData

话虽如此,我不知道你想做什么。

一些担忧:

  • 为什么不只传递实际值,而不是整个 ViewModel?
  • 为什么要在控制器之间重定向?(这可以完成,只是在您的场景中看不到原因)。