asp.net mvC语言 使用RedirectToAction时,视图上的模型为空



我使用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中。

通过RedirectToAction传递模型和参数
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");

相关内容

  • 没有找到相关文章

最新更新