2013-04-27 71 views
1

将一些数据保存到数据库之后,我从数据库中提取新创建的userId,然后我需要将它发送到下一个视图。我正在使用ReditectToAction来引导它并发送值。我已经验证了该值正在重定向,但我无法弄清楚如何获取它,因为进入AccountSetup的模型为null。我在哪里goig错了?如何从RedirectToAction访问控制器方法中的参数值

方法发送的ID:

  var id = user.UserId; 

      var accountModel = new AccountViewModel 
      { 
       UserId = id 
      }; 

      return RedirectToAction("AccountSetup", "Home", accountModel.UserId); 
     } 

我在调试已经证实,该accountModel.userId公顷值。

方法承接该ID:

public ActionResult AccountSetup(AccountViewModel model) 
    { 
     int id = model.UserId; 

机型为空。

回答

2
return RedirectToAction("AccountSetup", "Home", accountModel.UserId); 

您没有返回操作期望的模型,而只是一个id值。模型联编程序不能将此值绑定到AccountViewModel.UserId,它可能会将其绑定到默认路由中的id参数。您实际上期待的是AccountViewModel类型的模型,因此您应该发送AccountViewModel实例。

return RedirectToAction("AccountSetup", "Home", 
         new AccountViewModel {UserId = accountModel.UserId}); 
+0

谢谢你,伟大的工作和你的解释是有道理的。 – BattlFrog 2013-04-27 19:44:00

0

您需要使用TempData来存储重定向过程中的任何内容。

TempData["MyModel"] = accountModel; 
return RedirectToAction("AccountSetup", "Home"); 

然后在其他动作:

var accountModel = (AccountViewModel)TempData["MyModel"]; 
int id = accountModel.UserId; 
相关问题