不使用session或tempdata将模型传递给RedirectToAction?

时间:2014-10-29 02:39:03

标签: c# .net asp.net-mvc asp.net-mvc-4

我正在修改现有代码。

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

谢谢

2 个答案:

答案 0 :(得分: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);
 }

答案 1 :(得分:0)

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

话虽如此,最好的方法是将实体的id传递给您的新操作,然后访问您的存储库以使用已传递的ID初始化您的模型。让我们假设您已使用user属性初始化了UserID

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

然后在NextAction中使用传递的id

初始化模型