繁体   English   中英

使用 RedirectToAction 传递视图模型

[英]passing a view model with RedirectToAction

我想使用 RedirectToAction 将视图模型从一个操作传递到另一个操作,但是在执行此操作时,我收到一条错误消息,指出“对象引用未设置为对象的实例”,因为我已经用数据填充了模型来自控制器,但它在视图中为空。 我想将数据从登录传递到登录。 我不想使用查询字符串,因为这很容易被黑客操纵

[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);
}

RedirectToAction将 30x 踢回浏览器。 你的视图模型不会在那种旅行中幸存下来。

您可以将您的视图模型存储在TempData集合中,或者只是调用您想要的函数: return mySuperCoolControllerInstance.ActionsAreJustMethods(viewModel)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM