2014-10-29 25 views
0

我修改现有的代码。将模型传递给RedirectToAction而不使用会话或tempdata?

从一个动作我使用RedirectToAction转移执行控制到另一个动作。我也需要传递Model和RedirectToAction。我的想法是无法使用Session或tempData将模型传递给第二个动作而直接完成。但还是想问一下有没有一种技术可以通过RedirectToAction传递模型?我不想将模型放入Session或TempData中。

感谢

+0

请过去的模型内容代码和操作代码初始化模式。 – Yehia 2014-10-29 02:44:10

+1

你可以使用其中一个接受'Object routeValues'的重载,但只有当你的模型的属性是基本类型时(如果任何属性是一个复合类型的集合,那么它将会失败),但是你真的应该得到模式从数据库再次 – 2014-10-29 02:49:33

+0

另一个控制器内的其他操作方法? – noobed 2014-10-29 07:37:41

回答

1

您可以尝试类似的东西,但它并不觉得自己像一个自然的动作:

public ActionResult Index() 
{ 
    return RedirectToAction("AnotherAction", new 
    { 
     Parameter1 = Parameter1, 
     Parameter2 = Parameter2, 

     }); 
} 

[HttpGet] 
public ActionResult AnotherAction(ModelClass model) 
{ 
    //model.Parameter1 
    //model.Parameter2 
    return View(model); 
} 
0

我希望以前的答案的代码抛出一个异常尝试时隐式地将parameter1和parameter2的对象转换为ModelClass。

这就是说,最好的方法是将实体的id传递给您的新操作,然后访问您的存储库以使用已传递的id初始化模型。假设您已使用UserID属性初始化了user

return RedirectToAction("NextAction", new { id = user.UserID }); 

然后在NextAction只是传入ID

+1

如果'ModelClass'包含“Parameter1”和“Parameter2”属性,则不会引发异常 – 2014-10-29 11:58:32

相关问题