首页 新闻 会员 周边

HttpModule中获取页面控件

0
悬赏园豆:30 [已关闭问题]

HttpModule中获取页面控件,要在权限设计中使用,谢谢!

小胆粗心的主页 小胆粗心 | 菜鸟二级 | 园豆:300
提问于:2010-04-16 19:18
< >
分享
其他回答(3)
0

为什么不自己建立一个PageBase类,让页面继承它。在它的protected override void OnLoad(EventArgs e)里来遍历呢。

我自己的权限这样写:

protected override void OnLoad(EventArgs e)
{
    //管理员身份验证
    if (WebAdmin.Name == "" || HttpContext.Current.Session["WebAdmin"] == null)
    {
        .....
    }
    else
    {
        #region 权限页面及控件控制
        string currentPage = WebRequestOperator.GetPageName();
        if (!AdminPowerHt.Contains(currentPage))
        {
            //无权查看该页面!.....
        }
        else
        {
           
PageControls(Page, currentPage);
        }
        #endregion
    }

....
    base.OnLoad(e);
}

下面这个方法是遍历控件的:

#region 根据权限遍历页面中的所有控件
private void PageControls(Control controlParent, string currentPage)
{
    foreach (Control controlTemp in controlParent.Controls)
    {
        if (controlTemp.HasControls())
        {
            PageControls(controlTemp, currentPage);
        }
        else
        {
            if (controlTemp.ID != null)
            {
                string controlID = controlTemp.ID.ToString();
                string[] controlList = AdminPowerHt[currentPage].ToString().Split('↑');//处理控件
                if (StrHelper.InArray(controlID, controlList))
                {
                    controlTemp.Visible = false;
                }

            }
        }
    }
}



Astar | 园豆:40805 (高人七级) | 2010-04-16 20:07
0

HttpModule好像不在page的生命周期内,无法处理到page信息

不过httphandler可以做到,也就是先得到page对象,递归遍历控件树,检测控件添加你要的权限

LittlePeng | 园豆:3445 (老鸟四级) | 2010-04-16 22:49
httphandler? 能不能讲解下具体的的啊
支持(0) 反对(0) 小胆粗心 | 园豆:300 (菜鸟二级) | 2010-04-18 14:11
0

HttpModule 中不能取得页面控件的引用。

重新考虑一下你的设计吧。

分析一下网站中对于用户身份的处理会有帮助。

冠军 | 园豆:886 (小虾三级) | 2010-04-17 23:31
0

建立楼主研究一下.NET内置的权限管理机制,稍加改造,足以实现任何权限控制系统

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2010-04-29 13:35
举个例子?我也感兴趣
支持(0) 反对(0) 天羽 | 园豆:205 (菜鸟二级) | 2011-07-21 23:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册