您的位置:首页 > 其它

通过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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐