我正在使用 ASP.NET MVC 3 构建 Web 应用程序。
我想做的是在两个 Controller 之间传递值,尽管有很多方法可以做到这一点,但我对此特别感兴趣的是使用TempData
。
public ActionResult Action1()
{
string someMessage;
Test obj = SomeOperation();
if(obj.Valid)
{
someMessage = obj.UserName;
}
else
{
someMessage = obj.ModeratorName;
}
TempData["message"] = someMessage;
return RedirectToAction("Index");
}
public ActionResult Index()
{
ViewBag.Message = TempData["message"]
return View();
}
那么这里使用 TempData
是否正确?我的意思是,根据最佳编程实践,这种使用 TempData 的正确方法是吗?
在什么实时情况下应该使用TempData
?
注意:我已浏览以下链接
- When to use TempData vs Session in ASP.Net MVC
- http://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/
谢谢
最佳答案
TempData
是一个存储桶,您可以在其中转储仅以下请求所需的数据。也就是说,您放入 TempData 的任何内容都会在下一个请求完成后被丢弃。这对于一次性消息非常有用,例如表单验证错误。这里需要注意的重要一点是,这适用于 session 中的下一个请求,因此该请求可能会在不同的浏览器窗口或选项卡中发生。
回答您的具体问题:没有正确的使用方法。这一切都取决于可用性和便利性。如果它有效、有意义并且其他人相对容易理解它,那就很好。在您的特定情况下,以这种方式传递参数很好,但奇怪的是您需要这样做(代码味道?)。我宁愿在资源中(如果它是资源)或数据库中(如果它是持久值)保留这样的值。从您的使用情况来看,它似乎是一种资源,因为您将其用作页面标题。
希望这有帮助。
关于asp.net-mvc - 在 ASP.NET MVC 中使用 Tempdata - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12422930/