asp.net 2.0下根据权限动态控制菜单、动态配置导航信息

 一般管理系统往往需要通过权限管理菜单(是否显示,是否Enable),再加上导航树控件TreeView,形成灵活的导航控制方案。

     采用MasterPage是一个不错的思路,可以把Menu控件和TreeView控件都在其中放置,并且提供相应的数据源。如果Menu不经常变化(正常情况)就可以把Menu及其子菜单做成静态的,而TreeView内容根据菜单项来动态加载。

界面:

代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class MasterPagePerson : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // 权限控制
        if (Session["Previlege"].ToString() == "Person")
        {                     
            Menu1.Enabled = false;           
            Menu2.Visible = false;
            smsResultCheck.Provider = System.Web.SiteMap.Providers["smpResultCheck"];//menu3
        }
        else
        {
            Menu1.Enabled = true;
            Menu2.Visible = true;          
            smsResultCheck.Provider = System.Web.SiteMap.Providers["smpResultCheck"];//menu3
        }

        //导航树内容配置
        if(Session["TreeVProvider"]!=null)
            this.SiteMapDataSource1.Provider = System.Web.SiteMap.Providers[Session["TreeVProvider"].ToString()];
        else
            smsResultCheck.Provider = System.Web.SiteMap.Providers["smpResultCheck"];
    }
    protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
    {       
        Session["TreeVProvider"] = "CodeMaintain";
        this.SiteMapDataSource1.Provider = System.Web.SiteMap.Providers[Session["TreeVProvider"].ToString()];
    }
    protected void Menu2_MenuItemClick(object sender, MenuEventArgs e)
    {
        string m = Menu2.SelectedItem.Text;
        if (m.Equals("经费管理"))
        {
            Session["TreeVProvider"] = "ProjectFee";
            this.SiteMapDataSource1.Provider = System.Web.SiteMap.Providers[Session["TreeVProvider"].ToString()];          
        }
       
    }
    protected void Menu3_MenuItemClick(object sender, MenuEventArgs e)
    {
        string m = Menu3.SelectedItem.Text;
        if (m.Equals("部门审核"))
        {
            Session["TreeVProvider"] = "smpResultCheckDepartment";
            this.SiteMapDataSource1.Provider = System.Web.SiteMap.Providers[Session["TreeVProvider"].ToString()];           
        }
    }
}
运行效果图:

 

当然,需要配置web.config。

<siteMap enabled="true ">
   <providers>
    <add name="CodeMaintain" description="SiteMap   provider   that   reads   in   .sitemap   files. " type="System.Web.XmlSiteMapProvider,   System.Web,   Version=2.0.3600.0,   Culture=neutral,   PublicKeyToken=b03f5f7f11d50a3a " siteMapFile="CodeMaintain.sitemap "/>
    <add name="ProjectFee" description="SiteMap   provider   that   reads   in   .sitemap   files. " type="System.Web.XmlSiteMapProvider,   System.Web,   Version=2.0.3600.0,   Culture=neutral,   PublicKeyToken=b03f5f7f11d50a3a " siteMapFile="ProjectFee.sitemap "/>
        <add name="smpResultCheck" description="SiteMap   provider   that   reads   in   .sitemap   files. " type="System.Web.XmlSiteMapProvider,   System.Web,   Version=2.0.3600.0,   Culture=neutral,   PublicKeyToken=b03f5f7f11d50a3a " siteMapFile="ResultCheck.sitemap "/>
        <add name="smpResultCheckDepartment" description="SiteMap   provider   that   reads   in   .sitemap   files. " type="System.Web.XmlSiteMapProvider,   System.Web,   Version=2.0.3600.0,   Culture=neutral,   PublicKeyToken=b03f5f7f11d50a3a " siteMapFile="~/ResultCheck/DepartmentCheck.sitemap "/>
      </providers>
  </siteMap>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值