4

我有一个全局字符串变量,我在执行一个操作(按下提交按钮)后设置,然后我想在按下另一个按钮时访问同一个字符串,目前我正在做类似的事情

GlobalVariable = "blah";
return View();

再次访问它的最佳做法是什么。我想指出它是同一个页面(index.cshtml)

谢谢!

4

6 回答 6

8

如果它是每个用户的值,请使用:

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

希望这可以帮助。

于 2012-09-14T14:48:16.083 回答
4

您确定要让网站的每个用户都共享此状态吗?这是一个非常罕见的要求。更有可能它应该是特定于用户的。

ASP.NET 中有几个地方可以保存信息:

  • 应用程序- 全局范围,因此该值对所有用户可见。
  • 会话- 会话范围,对一个用户可见
  • 缓存- 全局范围,因此该值对所有用户可见。
  • TempData - 在这个和下一个请求期间对一个用户可见

例子:

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";        
}
于 2012-09-14T14:46:46.437 回答
3

我不是 ViewBag 的粉丝,所以我的解决方案是将其添加到您传递给视图的视图模型中,并使用 aHiddenFor()以便在您需要它用于每个后续操作时将其回发。

于 2012-09-14T14:39:52.697 回答
1

把它放在 ViewBag.GlobalVariable

于 2012-09-14T14:35:44.527 回答
0

在这种情况下,我建议不要在 ASP MVC 中使用 Session 甚至 viebag,而是使用 Cashing

 Cache["permvaluetostore"] =valuetokeep
于 2012-09-14T14:45:21.840 回答
0

您需要保留该数据。您可以使用数据库表会话变量来执行此操作。

会话变量值将可用于当前会话。

如果您希望该值在所有会话中都是全局的,您也可以考虑使用Caching

于 2012-09-14T14:47:16.060 回答