ASP.Net网页中强类型的全局数据

时间:2013-06-06 14:59:13

标签: c# asp.net webmatrix asp.net-webpages

在ASP.Net网页中存储强类型全局数据的最佳做法是什么?这对每个请求都是唯一的?基本上我需要WebPageContext.Current.PageData但强烈输入。

到现在为止,我想出了类似的东西:

public sealed class GlobalData
{
    public static GlobalData Current
    {
        get
        {
            if (WebPageContext.Current.PageData["GlobalData"] == null
                || WebPageContext.Current.PageData["GlobalData"].GetType() != typeof(GlobalData))
            {
                WebPageContext.Current.PageData["GlobalData"] = new GlobalData();
            }
            return WebPageContext.Current.PageData["GlobalData"];
        }
    }

    public string SomeData { get; set; }
}

这样我就可以在每个页面上使用GlobalData.Current.SomeData访问我的数据。或者有更好的解决方案吗?

1 个答案:

答案 0 :(得分:3)

这是一个非常好的方法。我稍微简化了一下:

public sealed class GlobalData
{
    public static GlobalData Current
    {
        get
        {
            // soft cast using "as" which will return null if the type is not correct
            var globalData = WebPageContext.Current.PageData["GlobalData"] as GlobalData;
            if (globalData == null)
            {
                // Need to instantiate
                globalData = new GlobalData();
                WebPageContext.Current.PageData["GlobalData"] = globalData;
            }

            return globalData;
        }
    }

    public string SomeData { get; set; }
}