我修改现有的代码。将模型传递给RedirectToAction而不使用会话或tempdata?
从一个动作我使用RedirectToAction转移执行控制到另一个动作。我也需要传递Model和RedirectToAction。我的想法是无法使用Session或tempData将模型传递给第二个动作而直接完成。但还是想问一下有没有一种技术可以通过RedirectToAction传递模型?我不想将模型放入Session或TempData中。
感谢
我修改现有的代码。将模型传递给RedirectToAction而不使用会话或tempdata?
从一个动作我使用RedirectToAction转移执行控制到另一个动作。我也需要传递Model和RedirectToAction。我的想法是无法使用Session或tempData将模型传递给第二个动作而直接完成。但还是想问一下有没有一种技术可以通过RedirectToAction传递模型?我不想将模型放入Session或TempData中。
感谢
您可以尝试类似的东西,但它并不觉得自己像一个自然的动作:
public ActionResult Index()
{
return RedirectToAction("AnotherAction", new
{
Parameter1 = Parameter1,
Parameter2 = Parameter2,
});
}
[HttpGet]
public ActionResult AnotherAction(ModelClass model)
{
//model.Parameter1
//model.Parameter2
return View(model);
}
我希望以前的答案的代码抛出一个异常尝试时隐式地将parameter1和parameter2的对象转换为ModelClass。
这就是说,最好的方法是将实体的id传递给您的新操作,然后访问您的存储库以使用已传递的id初始化模型。假设您已使用UserID
属性初始化了user
。
return RedirectToAction("NextAction", new { id = user.UserID });
然后在NextAction
只是传入ID
如果'ModelClass'包含“Parameter1”和“Parameter2”属性,则不会引发异常 – 2014-10-29 11:58:32
请过去的模型内容代码和操作代码初始化模式。 – Yehia 2014-10-29 02:44:10
你可以使用其中一个接受'Object routeValues'的重载,但只有当你的模型的属性是基本类型时(如果任何属性是一个复合类型的集合,那么它将会失败),但是你真的应该得到模式从数据库再次 – 2014-10-29 02:49:33
另一个控制器内的其他操作方法? – noobed 2014-10-29 07:37:41