使用RedirectToAction传递视图模型

3
我想通过RedirectToAction将一个视图模型从一个动作传递到另一个动作,但是在这样做时,我会遇到一个错误,提示"对象引用未设置为对象的实例",尽管我已经从控制器中填充了模型数据,但在视图中仍为null。我想从Login传递数据到LoggedIn。我不想使用查询字符串,因为这可以被黑客轻易篡改。
[HttpPost]
public ActionResult Login(User account)
{
    using (TestDBEntities db = new TestDBEntities())
    {
        var user = db.Users.SingleOrDefault(u => u.Email == account.Email && u.Password == account.Password);
        if (user != null)
        {
            Session["USER"] = user.UserID;
            var model = new UserAccountViewModel{UserAccount = user};
            return RedirectToAction("LoggedIn", model);
        }

        ModelState.AddModelError("", "User credentials are invalid");
    }

    return View("Login");
}

public ActionResult LoggedIn(UserAccountViewModel model)
{
    return View(model);
}

你的LoggedIn.cshtml长什么样子? - Ziv Weissman
尝试这个:(https://dev59.com/d2gu5IYBdhLWcg3wnYLo) - Abhishek Duppati
1个回答

2

RedirectToAction触发30x重定向到浏览器。您的视图模型无法承受这种旅程。

您可以将视图模型存储在TempData集合中,或者直接调用所需的函数:return mySuperCoolControllerInstance.ActionsAreJustMethods(viewModel)

在您的情况下,应该是:return this.LoggedIn(model);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接