通过Visual studio 2005 中的web.sitemap实现OUTLOOK风格的系统菜单
2008-02-28 12:19
381 查看
通过Visual studio 2005 中的web.sitemap实现OUTLOOK风格的系统菜单
Visual Studio 开发工具提供的一些功能让开发变得更加简单,比如 web.sitemap可以直接实现菜单导航,支持菜单模式和树的模式。 基本上菜单的变化,只需要配置一下 web.sitemap文件即可。
但这个功能并不一定能让最终端的用户满意,因为界面的操作风格比较单一,也只是方便的集成一些微软模式的权限控制。
如何实现一个OUTLOOK风格的菜单,并集成自有的权限体系呢。
如图
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<!--disenable为true表示显示全部菜单,如果没权限显示不可用,如果为false表示没有权限则移除-->
<siteMapNode title="主页" url="Newmain.aspx" target="_parent" disenable="true" startIndex="1" AdminIndex="9">
<siteMapNode title="我的桌面" img="skins/2004/images/icon/desktop.gif" menuIndex="1" url ="~\1.aspx">
<siteMapNode title="待办事项" url="~\Forms\frmContent.aspx" description="待办事项" targeturl="" />
<siteMapNode title="我登记事件" url="~\Forms\frmWaittingContent.aspx?TypeContent=MyReg" description="我登记事件"/>
<siteMapNode title="出差授权" url="~\Forms\FrmAgentSet.aspx" description="出差授权"/>
</siteMapNode>
<siteMapNode title="系统管理" img="skins/2004/images/icon/sKms.gif" menuIndex="9" url ="~\9.aspx">
<siteMapNode title="部门维护" url="~\DeptForms\frmMain.htm" description="部门维护"/>
<siteMapNode title="用户管理" url="~\DeptForms\frmUsers.htm" description="用户管理"/>
</siteMapNode>
</siteMapNode>
</siteMap>
比如:target="_parent"disenable="true"startIndex="1" AdminIndex。。。都是扩展的属性,用于一些控制逻辑的实现
2、根据输出一级菜单控制HTML及脚本
当然B/S系统实现OUTLOOK风格的菜单一定也是一些HTML、样式表、脚本来实现的。实现这一功能开发要做的事情是,根据sitemap的一级菜单设置输出相应的HTML。
[代码参考]
protected void Page_Load(object sender, System.EventArgs e)
private void LoadMenusHtml()
public void GetMenuHtml(string strUserName,long lngUserID,ref string strHeader,ref string strMens)
3、权限控制
在大部分国内的系统用户,是希望能在菜单上控制到权限的,权限的实现是跟某个具体的系统管理模块紧密相关的。Sitemap提供的权限控制跟微软提供的权限模块紧密梆定但不一定能满足国内系统的管理需求。
需要在sitemap上实现自己的权限控制代码。
[代码参考]
public void CheckNodeRight(string strID, TreeNode item, Hashtable htAllRights, TreeView TreeView1)
{
{
{ }
{
{
{
{
TreeView1.Nodes.Remove(item);
}
}
}
}
4、利用缓存技术进行优化
因为菜单页面的访问是非常频繁的,但用户和权限的变化频率比较小,对于大规模访问的系统来说,不要忘记利用缓存技术进行优化。 由于页面的输出跟用户有关,因此利用visual studio 2005的页面缓存功能就可以非常简单的实现了。
在菜单页面上加上标记:
<%@ OutputCache Duration="300000" VaryByParam="*"%> 即可,因为URL上已经将参数区别了。系统会自动根据参数不同缓存相应的版本。
5、配置sitemap实现功能
以上开发完成后,通过配置sitemap即可实现OUTLOOK风格的菜单了。还可以复制到其它系统中重复利用,实现重用的价值。
[b]E8.Net开源架构提供了这一功能的全部代码。用户可以直接使用或参考,并在此基础上更加的完善[/b]。
E8.Net工作流架构大量节约用户的开发成本为企业应用开发提供起点,提升软件生产力,欢迎访问:http://***/
E8.Net工作流平台 提升企业战略执行力
http://***
E8在线,打造中小企业一站式管理软件租用平台
http://www.onlinee8.net
E8系列软件又添新成员 E8CRM 带流程的CRM软件 http://www.e8crm.com
Visual Studio 开发工具提供的一些功能让开发变得更加简单,比如 web.sitemap可以直接实现菜单导航,支持菜单模式和树的模式。 基本上菜单的变化,只需要配置一下 web.sitemap文件即可。
但这个功能并不一定能让最终端的用户满意,因为界面的操作风格比较单一,也只是方便的集成一些微软模式的权限控制。
如何实现一个OUTLOOK风格的菜单,并集成自有的权限体系呢。
如图
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<!--disenable为true表示显示全部菜单,如果没权限显示不可用,如果为false表示没有权限则移除-->
<siteMapNode title="主页" url="Newmain.aspx" target="_parent" disenable="true" startIndex="1" AdminIndex="9">
<siteMapNode title="我的桌面" img="skins/2004/images/icon/desktop.gif" menuIndex="1" url ="~\1.aspx">
<siteMapNode title="待办事项" url="~\Forms\frmContent.aspx" description="待办事项" targeturl="" />
<siteMapNode title="我登记事件" url="~\Forms\frmWaittingContent.aspx?TypeContent=MyReg" description="我登记事件"/>
<siteMapNode title="出差授权" url="~\Forms\FrmAgentSet.aspx" description="出差授权"/>
</siteMapNode>
<siteMapNode title="系统管理" img="skins/2004/images/icon/sKms.gif" menuIndex="9" url ="~\9.aspx">
<siteMapNode title="部门维护" url="~\DeptForms\frmMain.htm" description="部门维护"/>
<siteMapNode title="用户管理" url="~\DeptForms\frmUsers.htm" description="用户管理"/>
</siteMapNode>
</siteMapNode>
</siteMap>
比如:target="_parent"disenable="true"startIndex="1" AdminIndex。。。都是扩展的属性,用于一些控制逻辑的实现
2、根据输出一级菜单控制HTML及脚本
当然B/S系统实现OUTLOOK风格的菜单一定也是一些HTML、样式表、脚本来实现的。实现这一功能开发要做的事情是,根据sitemap的一级菜单设置输出相应的HTML。
[代码参考]
protected void Page_Load(object sender, System.EventArgs e)
private void LoadMenusHtml()
public void GetMenuHtml(string strUserName,long lngUserID,ref string strHeader,ref string strMens)
3、权限控制
在大部分国内的系统用户,是希望能在菜单上控制到权限的,权限的实现是跟某个具体的系统管理模块紧密相关的。Sitemap提供的权限控制跟微软提供的权限模块紧密梆定但不一定能满足国内系统的管理需求。
需要在sitemap上实现自己的权限控制代码。
[代码参考]
public void CheckNodeRight(string strID, TreeNode item, Hashtable htAllRights, TreeView TreeView1)
{
{
{ }
{
{
{
{
TreeView1.Nodes.Remove(item);
}
}
}
}
4、利用缓存技术进行优化
因为菜单页面的访问是非常频繁的,但用户和权限的变化频率比较小,对于大规模访问的系统来说,不要忘记利用缓存技术进行优化。 由于页面的输出跟用户有关,因此利用visual studio 2005的页面缓存功能就可以非常简单的实现了。
在菜单页面上加上标记:
<%@ OutputCache Duration="300000" VaryByParam="*"%> 即可,因为URL上已经将参数区别了。系统会自动根据参数不同缓存相应的版本。
5、配置sitemap实现功能
以上开发完成后,通过配置sitemap即可实现OUTLOOK风格的菜单了。还可以复制到其它系统中重复利用,实现重用的价值。
[b]E8.Net开源架构提供了这一功能的全部代码。用户可以直接使用或参考,并在此基础上更加的完善[/b]。
E8.Net工作流架构大量节约用户的开发成本为企业应用开发提供起点,提升软件生产力,欢迎访问:http://***/
E8.Net工作流平台 提升企业战略执行力
http://***
E8在线,打造中小企业一站式管理软件租用平台
http://www.onlinee8.net
E8系列软件又添新成员 E8CRM 带流程的CRM软件 http://www.e8crm.com
相关文章推荐
- 通过Visual studio 2005 中的web.sitemap实现OUTLOOK风格的系统菜单
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
- Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器
- 数据挖掘项目之---通过对web日志的挖掘来实现内容推荐系统
- 通过对web日志的挖掘来实现内容推荐系统
- 通过制定SQL计划和系统计划实现]SQL Server 2005数据库定期备份和删除历史备份记录
- Visual Studio 2005和Visual Studio 2008 WEB开发时实现拖动控件放在绝对位置(所见即所得)
- 64位系统Visual Studio通过IIS调试Web程序报错:未在本地计算机上注册"MSDAORA.1"提供程序
- 基于JMS消息中间件的分布式系统初探究(一) - 通过JMS实现Web服务器与服务框架的通讯
- 通过Visual Studio 2005 中的数据源选择对话框实现数据库连接配置(用户使用)
- [通过制定SQL计划和系统计划实现]SQL Server 2005数据库定期备份和删除历史备份记录
- Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器
- 通过配置Sitemap实现对左侧菜单的权限控制
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
- 通过对web日志的挖掘来实现内容推荐系统
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航
- Visual Studio 2005菜单重复现象
- 简单web系统页面构架(二级伸缩式左菜单)
- 集成C#测试框架和Selenium对于Web系统实现自动化测试