我正在使用AcceptVerbsScott Gu的Preview 5博客文章中详述的方法来处理ASP.NET MVC中的表单条目:
所以我没有必要使用TempData.也就是说,我现在必须在此过程中添加一个"确认"步骤,似乎需要使用TempData.
出于某种原因,我厌恶使用TempData- 它是一种可以设计的东西.
这是一个有效的问题,还是我在弥补?
在ASP.NET MVC 2中,TempData值会持续到会话结束或读取为止.用微软的话说 ......
TempData的值一直存在,直到读取或会话超时为止.以这种方式保持TempData可以启用重定向等方案,因为TempData中的值可以在单个请求之外使用.
我以为我理解了这一点,但我在我的应用程序中遇到了异常行为,其中有一个TempData值可用且它不应该可用.通常,我有一个控制器,其中包含一系列操作,其中第一个操作设置一个TempData值,接下来的几个操作读取然后设置该TempData值,最后一个操作读取TempData值.下面的伪代码......
[HttpPost]
public ActionResult Step1()
{
TempData["bar"] = foo;
return RedirectToAction("Step2");
}
public ActionResult Step2()
{
var foo = TempData["bar"];
TempData["bar"] = foo;
return View();
}
[HttpPost]
public ActionResult Step2()
{
var foo = TempData["bar"];
TempData["bar"] = foo;
return RedirectToAction("Step3");
}
public ActionResult Step3()
{
var foo = TempData["bar"];
TempData["bar"] = foo;
return View();
}
[HttpPost]
public ActionResult Step3()
{
var foo = TempData["bar"]; …Run Code Online (Sandbox Code Playgroud) 我的控制器中有两个操作结果.概述和关于.
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) });
}
Run Code Online (Sandbox Code Playgroud)
我想记住传递给Overview的id,并在About上使用它作为默认值.当用户将标签从Overview切换到About时,我不知道如何保持此Id不变.