我有一个全局字符串变量,我在一个动作完成后设置(按下提交按钮),然后当我按下另一个按钮时我想访问相同的字符串,目前我正在做类似的事情
GlobalVariable = "blah";
return View();
再次访问此内容的最佳做法是什么?我想指出它是同一页面(index.cshtml)
谢谢!
答案 0 :(得分:7)
如果是每用户值,请使用:
Session["MyKey"] = "MyValue"; // save the value
var myValue = (string) Session["MyKey"]; // retrieve the value
如果所有用户的一个值使用此值:
Application["MyKey"] = "MyValue"; // save the value
var myValue = (string) Application["MyKey"]; // retrieve the value
希望这有帮助。
答案 1 :(得分:4)
您确定要让网站的每个用户共享此状态吗?这是一个非常罕见的要求。更可能的是它应该是用户特有的。
ASP.NET中很少有地方可以保存信息:
示例:
public ActionResult MyAction()
{
HttpContext.Application["global_var"] = "anyone can see me";
HttpContext.Cache["global_cached"] = "anyone can see me, but I can expire";
Session["session_var"] = "only this user can see me";
TempData["flash_var"]= "only this user can see me but also in next request";
}
答案 2 :(得分:3)
我不是ViewBag的粉丝,所以我的解决方案是将它添加到您传递给视图的视图模型中,并使用HiddenFor()
以便在需要时将其发回每个后续行动。
答案 3 :(得分:1)
将其放入ViewBag.GlobalVariable
答案 4 :(得分:0)
在ASP MVC中我不建议使用Session甚至是viewbag,我建议在这种情况下使用Cashing
Cache["permvaluetostore"] =valuetokeep
答案 5 :(得分:0)
您需要保留该数据。您可以使用数据库表或会话变量来执行此操作。
会话变量值可用于当前会话。
如果您希望所有会话中的值都是全局值,您还可以考虑使用缓存。