C# MVC3控制器动作结果';记住';传入Id

C# MVC3控制器动作结果';记住';传入Id,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我的控制器中有两个动作结果。概述和关于 public ActionResult Overview(int id) { return View(new OverviewModel() { Project = db.People.Find(id) }); } public ActionResult About(int id) { return View(new AboutModel() { Project = db.People.Find(id) }); } 我想记住传递给Ove

我的控制器中有两个动作结果。概述和关于

public ActionResult Overview(int id)
{
    return View(new OverviewModel() { Project = db.People.Find(id) });
}

public ActionResult About(int id)
{
    return View(new AboutModel() { Project = db.People.Find(id) });
}

我想记住传递给Overview的id,并在About上使用它作为默认值。我不知道如何在用户将选项卡从Overview切换到About时保持此Id不变。

您可以尝试将Id存储在TempData中。可能是这样的(未测试)


您可以尝试将id存储在TempData中。可能是这样的(未测试)


如果此数据不敏感,还可以使用隐藏的html属性。它为我们创造了奇迹,为我们节省了大量的处理能力。

如果此数据不敏感,也可以使用隐藏的html属性。它为我们创造了奇迹,并为我们节省了大量的处理能力。

为什么将它放在会话中不起作用?你说将它放在会话中是什么意思?就像布兰登的答案一样,除了会话而不是临时数据。为什么将它放在会话中不起作用?你说将它放在会话中是什么意思?就像布兰登的答案一样,除了使用Session而不是TempData之外,您能详细说明什么是TempData吗?谢谢,这确实有效。@dnxviral,TempData与ViewData类似,只是它可以在两个连续的请求中保持不变,这对于在两个不同的控制器操作之间传递数据非常有用。MVC中的TempData实际上会一直保持到被检索为止。由于FYI临时数据实际上存储在用户会话状态中,因此它更像会话数据而不是视图数据。谢谢你的澄清!有没有一种方法可以在多次检索数据的同时保持数据的持久性?能否详细说明什么是TempData?谢谢,这确实有效。@dnxviral,TempData与ViewData类似,只是它可以在两个连续的请求中保持不变,这对于在两个不同的控制器操作之间传递数据非常有用。MVC中的TempData实际上会一直保持到被检索为止。由于FYI临时数据实际上存储在用户会话状态中,因此它更像会话数据而不是视图数据。谢谢你的澄清!有没有一种方法可以在多次检索数据的同时保持数据的持久性?
public ActionResult Overview(int id)
{
    TempData["YourId"] = id;
    return View(new OverviewModel() { Project = db.People.Find(id) });
}

public ActionResult About(int? id)
{
    id = id ?? int.Parse(TempData["YourId"].ToString());
    return View(new AboutModel() { Project = db.People.Find(id) });
}