使用RedirectToAction时,视图上的模型为null

时间:2015-06-05 04:53:45

标签: asp.net-mvc entity-framework linq model

我使用RedirectToAction在登录后加载新页面并使用它传递数据库模型。

RedirectToAction("AdministrationPortal", "Manage", person);

person.user模型是由实体框架创建的User类。人的模型是

class Person { 
    public User user { get; set; };
    public string roleType { get; set; };
}

I节点person对象确实在调用RedirectToAction时保存数据。

我不知道为什么当我在门户网站页面@Model.Person.user上使用它时为空。

@model namespace.Model.Person

2 个答案:

答案 0 :(得分:2)

使用This <a href="/some/link.html">link</a> is broken 重定向时,无法传递复杂对象。

它用于传递RedirectToAction而非模型。

要暂时保留重定向结果的状态,您需要将数据存储在routeValues

您可以参考此处获取更多信息:passing model and parameter with RedirectToAction

TempData

然后

TempData["_person"] = person;
return RedirectToAction("AdministrationPortal", "Manage");

答案 1 :(得分:1)

当我需要在RedirectToAction中发送模型时,我只是传递id(假设你的人有id):

return RedirectToAction("AdministrationPortal", "Manage", new { @id=person.Id} );

然后在控制器:

public ActionResult AdministrationPortal(long id)
{
  //Get Person from DB
  var model=GetPersonById(id);
  return View(model);
}

我个人不喜欢使用TempData,但如果你想使用它,那么:

TempData["Person"] =person; 
return RedirectToAction("AdministrationPortal", "Manage");