我有一个全局字符串变量,我在执行一个操作(按下提交按钮)后设置,然后我想在按下另一个按钮时访问同一个字符串,目前我正在做类似的事情
GlobalVariable = "blah";
return View();
再次访问它的最佳做法是什么。我想指出它是同一个页面(index.cshtml)
谢谢!
我有一个全局字符串变量,我在执行一个操作(按下提交按钮)后设置,然后我想在按下另一个按钮时访问同一个字符串,目前我正在做类似的事情
GlobalVariable = "blah";
return View();
再次访问它的最佳做法是什么。我想指出它是同一个页面(index.cshtml)
谢谢!
如果它是每个用户的值,请使用:
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
希望这可以帮助。
您确定要让网站的每个用户都共享此状态吗?这是一个非常罕见的要求。更有可能它应该是特定于用户的。
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";
}
我不是 ViewBag 的粉丝,所以我的解决方案是将其添加到您传递给视图的视图模型中,并使用 aHiddenFor()
以便在您需要它用于每个后续操作时将其回发。
把它放在 ViewBag.GlobalVariable
在这种情况下,我建议不要在 ASP MVC 中使用 Session 甚至 viebag,而是使用 Cashing
Cache["permvaluetostore"] =valuetokeep
您需要保留该数据。您可以使用数据库表或会话变量来执行此操作。
会话变量值将可用于当前会话。
如果您希望该值在所有会话中都是全局的,您也可以考虑使用Caching。