我使用RedirectToAction在登录后加载一个新页面并通过它的数据库模型。
RedirectToAction("AdministrationPortal", "Manage", person);
的人。用户模型是由实体框架创建的user类。人的模式是
class Person {
public User user { get; set; };
public string roleType { get; set; };
}
在RedirectToAction被调用时,person对象确实保存了数据。
不知道为什么当我在门户页面上使用它时,@Model.Person.user
为空。
@model namespace.Model.Person
使用RedirectToAction
重定向时不能传递复杂对象
用于传递routeValues
而不是Model。
为了临时维护重定向结果的状态,您需要将数据存储在TempData
中。
TempData["_person"] = person;
return RedirectToAction("AdministrationPortal", "Manage");
然后public ActionResult AdministrationPortal()
{
Person p_model = (Person)TempData["_person"];
return View(p_model);
}
当我需要在RedirectToAction
中发送模型时,我只需传递id(假设您的人有id):
return RedirectToAction("AdministrationPortal", "Manage", new { @id=person.Id} );
Then at controller:
public ActionResult AdministrationPortal(long id)
{
//Get Person from DB
var model=GetPersonById(id);
return View(model);
}
我个人不喜欢使用TempData,但如果你喜欢使用它,那么:
TempData["Person"] =person;
return RedirectToAction("AdministrationPortal", "Manage");