ASP MVC 5 TempData无法使用RedirectToAction?

时间:2016-08-16 14:51:39

标签: asp.net-mvc session redirect tempdata

我的控制器中有以下tempdata:

    public ActionResult Index(string query = null)
    {

        TempData["message"] = string.Format("test message");

        return RedirectToAction("Index", "Posts");
    }

在我的_layout.cshtml文件中,我有以下内容:

 @if (TempData["message"] != null)
 {
      <div class="message">@TempData["message"]</div>
 }

但没有显示任何内容。如果执行以下操作,即不从我的控制器方法重定向,则会显示该消息。

public ActionResult Index(string query = null)
{

        TempData["message"] = string.Format("test message");

         return View();

}

所以基本上它似乎不适用于RedirectToAction。奇怪的是它之前有用,所以不确定突然发生了什么?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在将对象分配给TempData之前,必须先对其进行序列化。例如,

AccountHolderDetails user = new AccoundHolderDetails();
TempData["UserData"] = JsonConvert.SerializeObject(user);

并通过反序列化来检索对象。

var user = JsonConvert.DeserializeObject<AccountHolderDetails>(TempData["UserData"].ToString());