Ответ 1
Вы не можете передавать сложные объекты в URL-адресе. Вам придется отправить свои составные части:
public ActionResult Action1()
{
if (ModelState.IsValid)
{
// Here user object with updated data
return RedirectToAction("action2", new {
id = user.Id,
firstName = user.FirstName,
lastName = user.LastName,
...
});
}
return view(Model);
}
Также обратите внимание, что я добавил return RedirectToAction
вместо вызова RedirectToAction
, как показано в вашем коде.
Но гораздо лучший подход - отправить только идентификатор пользователя:
public ActionResult Action1()
{
if (ModelState.IsValid)
{
// Here user object with updated data
return RedirectToAction("action2", new {
id = user.Id,
});
}
return view(Model);
}
и в вашем целевом действии используйте этот идентификатор для извлечения пользователя из любого места, где этот пользователь хранится (может быть база данных или что-то еще):
public ActionResult Action2(int id)
{
User user = GetUserFromSomeWhere(id);
return view(user);
}
Некоторые альтернативные подходы (но я не рекомендую и не использую) - это сохранить объект в TempData:
public ActionResult Action1()
{
if(ModelState.IsValid)
{
TempData["user"] = user;
// Here user object with updated data
return RedirectToAction("action2");
}
return view(Model);
}
и в вашем целевом действии:
public ActionResult Action2()
{
User user = (User)TempData["user"];
return View(user);
}