当前位置:  开发笔记 > 编程语言 > 正文

为请求的持续时间设置全局变量

如何解决《为请求的持续时间设置全局变量》经验,为你挑选了1个好方法。

我可以为单个请求的长度设置某种全局变量,以便页面的所有控件都可以响应它而不必将它传递给它们中的每一个吗?

例如,如果有人点击我的MasterPage上的"保存"按钮,我是否可以设置一些内容,以便我页面上的每个UserControl都可以具有如下的Page_Load:

protected void Page_Load(object sender, EventArgs e)
{
    if (isSaving) // isSaving is a global variable
    {
        saveData();  // save myself
    }
    loadData();
}

它似乎比让masterpage中的委托调用Page的save函数容易得多,后者然后将UC1.saveData()调用到每个UserControl,尽管我知道更好的面向对象思维.



1> 小智..:

是的你可以.看看显而易见的地方:HttpContext和HttpContext.Current.Items在请求处理期间始终可访问的集合(请参阅http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx).

就像一个提示:

public static class RequestScopedData
{
    private const string key = "key_that_you_choose";
    public static bool IsSaving
    {
        get
        {
            object o = HttpContext.Current.Items[key];
            return Convert.ToBoolean(o);            
        }
        set
        {
            HttpContext.Current.Items[key] = value;
        }
    }
}

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有