1

将一些数据保存到数据库后,我从数据库中拉出新创建的 userId,我需要将其发送到下一个视图。我正在使用 ReditectToAction 来引导它并发送值。我已经验证了该值正在重定向,但我不知道如何获取它,因为 AccountSetup 中的模型为空。我哪里错了?

发送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;

模型为空。

4

2 回答 2

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

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

return RedirectToAction("AccountSetup", "Home",
                        new AccountViewModel {UserId = accountModel.UserId});
于 2013-04-27T19:19:53.730 回答
0

您需要用于TempData在重定向期间存储任何内容。

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

然后在另一个动作中:

var accountModel = (AccountViewModel)TempData["MyModel"];
int id = accountModel.UserId;
于 2013-04-27T19:20:08.370 回答