Yas*_*ser 66 asp.net-mvc tempdata asp.net-mvc-3 asp.net-mvc-2
我正在使用ASP.NET MVC 3来构建Web应用程序.
我想要做的是在两个控制器之间传递值,虽然有很多方法可以做到这一点我特别感兴趣的是使用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();
}
Run Code Online (Sandbox Code Playgroud)
那么TempData
这里的使用是否正确?我的意思是在最好的编程实践中使用这种正确的方法TempData
吗?
在什么时候应该TempData
使用案例?
注意:我已经通过以下链接
谢谢
Dis*_*ame 70
TempData
是一个存储桶,您可以在其中转储仅对以下请求所需的数据.也就是说,在下一个请求完成后,您放入TempData的任何内容都将被丢弃.这对于一次性消息很有用,例如表单验证错误.需要注意的重要一点是,这适用于会话中的下一个请求,因此请求可能发生在不同的浏览器窗口或选项卡中.
回答你的具体问题:没有正确的方法来使用它.这完全取决于可用性和便利性.如果它有效,有意义,而其他人则相对容易理解,这很好.在你的特殊情况下,以这种方式传递参数很好,但你需要这样做很奇怪(代码味道?).我宁愿在资源(如果它是资源)或数据库中保留这样的值(如果它是持久值).根据您的使用情况,它似乎是一种资源,因为您将其用于页面标题.
希望这可以帮助.
Yog*_*ogi 56
请注意,MVC 3以后TempData的持久性行为已经改变,现在TempData中的值一直存在直到被读取,而不仅仅是下一个请求.
TempData的值一直存在,直到读取或会话超时为止.以这种方式保持TempData可以启用重定向等方案,因为TempData中的值可以在单个请求之外使用. https://msdn.microsoft.com/en-in/library/dd394711%28v=vs.100%29.aspx
Moj*_*aba 16
请注意TempData持久性,这有点棘手.例如,如果您甚至只是在当前请求中读取TempData,它将被删除,因此您没有它用于下一个请求.相反,您可以使用Peek
方法.我建议阅读这篇很酷的文章:
归档时间: |
|
查看次数: |
92125 次 |
最近记录: |