我有2个控制器:AliceController
和BobController
。每个都包含Index
操作方法。
viewmodel很简单如下:
class Foo{[Required]public int data{get;set;}}
如何将强类型对象从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();
}
}
答案 0 :(得分:4)
理论上,您可以使用RouteValueDictionary
参数RedirectToAction
:
return RedirectToAction("Index", "Bob", new { param = value });
但是,无法通过此类重定向传递对象 *,只能将原始类型添加到GET URL(int,string等)。
改为使用 TempData 。
话虽如此,我不知道你想要做什么。
一些担忧:
答案 1 :(得分:1)
你不能只是实例化BobController并返回它的索引方法的结果,传入Foo吗?
答案 2 :(得分:1)
我不确定您是否可以通过重定向传递强类型对象。
您可以改为仅传递参数
RedirectToAction( new RouteValueDictionary(
new{
controller = "Blah",
action = "Blah",
foo = "Bar"
}
));