передача модели представления с RedirectToAction - PullRequest
3 голосов
/ 10 марта 2020

Я хочу передать модель представления из одного действия в другое с помощью RedirectToAction, однако при этом я получаю сообщение об ошибке, в котором говорится, что «Ссылка на объект не установлена ​​на экземпляр объекта», когда я уже заполнил Модель с данными из контроллера, но это нуль в представлении. Я хочу передать данные из 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);
}

1 Ответ

2 голосов
/ 10 марта 2020

RedirectToAction возвращает 30x обратно в браузер. Ваша модель представления не выдержит такой поездки.

Вы можете либо сохранить модель представления в коллекции TempData, либо просто вызвать нужную функцию: return mySuperCoolControllerInstance.ActionsAreJustMethods(viewModel)

в ваш случай это будет: return this.LoggedIn(model);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...