在asp.net mvc中是否存在不使用cookie或session [“”]存储全局变量的方法?
我知道cookies和会话[“”]有一些缺点,我想在退出时使用最好的方法。
答案 0 :(得分:2)
如果它们确实是全局变量,那么您应该实现singleton pattern并且可以全局访问Instance
来保存变量。
这是一个简单的例子:
public sealed class Settings
{
private static Settings instance = null;
static readonly object padlock = new object();
// initialize your variables here. You can read from database for example
Settings()
{
this.prop1 = "prop1";
this.prop2 = "prop2";
}
public static Settings Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Settings();
}
return instance;
}
}
}
// declare your global variables here
public string prop1 { get; set; }
public string prop2 { get; set; }
}
您可以在代码中使用它们:
var globalvar1 = Settings.Instance.prop1;
此类及其变量将仅初始化一次(当应用程序启动时),并且它将在您的应用程序中全局可用。
答案 1 :(得分:1)
基本上你有以下选择:
此处 - http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html - 您可以找到描述它们的精彩文章。
答案 2 :(得分:0)
确定:HttpContextBase.Application(无过期)或HttpContextBase.Cache(有效期)。您可以通过Controller类的HttpContext属性访问HttpContextBase实例。