在asp.net 2.0中提供了两种导航控件
- TreeView控件
- 可扩展和折叠的分支
- 节点是可导航, 可选择的,也可添加选择框
- TreeNode对象定义的内容
- TreeNodes可以通过声明方式,写代码方式或通过数据邦定方式添加
- TreeNodes可以按需装载
- Menu控件
- 在Web页面中提供下拉或弹出式的菜单
- Items 是导航的或可选择的
- Menu 控件显示可以是竖直方向也可以是水平方向
- MenuItems可以通过声明方式,写代码方式或通过数据邦定方式添加
同时提供了一个用于连接数据源的控件SiteMapDataSource,TreeView控件和Menu控件可以利用它实现自身于数据源的绑定。SiteMapDataSource它是通过数据邦定方式添加同时提供了一个用于连接数据源的控件SiteMapDataSource,TreeView控件和Menu控件可以利用它实现自身于数据源的绑定。SiteMapDataSource会查找项目中名为web.sitemap的 一个XML文件,如果想使用web.sitemap为名字,可以在配置文件web.config中改名。下面的Acme.sitemap就时更名后的新名字。
<configuration>
<system.web>
<siteMap>
<providers>
<remove name="AspNetXmlSiteMapProvider" />
<add name="AspNetXmlSiteMapProvider"
type="System.Web.XmlSiteMapProvider, System.Web,
"
siteMapFile="Acme.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
该XML文件中定义了关于导航的所有信息,以下是一个web.sitemap的例子。
<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode title="Home" url="SiteMapDataSource.aspx">
<siteMapNode title="Product Families">
<siteMapNode title="Windows" url="SiteMapDataSource.aspx?id=windows" />
<siteMapNode title="Office" url="SiteMapDataSource.aspx?id=office" />
<siteMapNode title="Mobile Devices" url="SiteMapDataSource.aspx?id=mobile" />
<siteMapNode title="Business Solutions" url="SiteMapDataSource.aspx?id=business" />
<siteMapNode title="Servers" url="SiteMapDataSource.aspx?id=servers" />
<siteMapNode title="Developer Tools" url="SiteMapDataSource.aspx?id=tools" />
<siteMapNode title="Games and XBox" url="SiteMapDataSource.aspx?id=games" />
<siteMapNode title="All Products" url="SiteMapDataSource.aspx?id=all" />
</siteMapNode>
<siteMapNode title="Resources">
<siteMapNode title="Support">
<siteMapNode title="Support Home" url="SiteMapDataSource.aspx?id=support" />
<siteMapNode title="Knowledge Base" url="SiteMapDataSource.aspx?id=knowledge" />
</siteMapNode>
<siteMapNode title="Downloads" url="SiteMapDataSource.aspx?id=downloads" />
<siteMapNode title="Windows Update" url="SiteMapDataSource.aspx?id=windowsupdate" />
<siteMapNode title="Office Update" url="SiteMapDataSource.aspx?id=officeupdate" />
<siteMapNode title="Learning Tools">
<siteMapNode title="Training & Certification" url="SiteMapDataSource.aspx?id=training" />
<siteMapNode title="Books" url="SiteMapDataSource.aspx?id=books" />
<siteMapNode title="Events & Webcasts" url="SiteMapDataSource.aspx?id=events" />
<siteMapNode title="Patterns & Practices" url="SiteMapDataSource.aspx?id=patterns" />
</siteMapNode>
<siteMapNode title="Community" url="SiteMapDataSource.aspx?id=community" />
<siteMapNode title="Security" url="SiteMapDataSource.aspx?id=security" />
</siteMapNode>
<siteMapNode title="About Microsoft">
<siteMapNode title="Corporate Relations" url="SiteMapDataSource.aspx?id=relations" />
<siteMapNode title="Investor Relations" url="SiteMapDataSource.aspx?id=investors" />
<siteMapNode title="Careers" url="SiteMapDataSource.aspx?id=careers" />
<siteMapNode title="About this Site" url="SiteMapDataSource.aspx?id=about" />
</siteMapNode>
</siteMapNode>
</siteMap>
其中有一个根节点siteMap,然后下面是子节点,子节点有两个属性一个是显示的文本,一个是要导航到的URL,子节点可以镶套。SiteMapDataSource控件有ShowStartingNode属性,通过设置它可以可以决定是否显示根节点的第一个子节点,也就是上面代码中Text为“Home”的节点,同时可以通过StartingNodeUrl来设置其导航到的页面。
如果要将TreeView于Menu绑定到SiteMapDataSource只需按以下方式定义,其中SiteMap为SiteMapDataSource的 ID名
<asp:TreeView DataSourceID="SiteMap" RunAt="server" />
<asp:Menu DataSourceID="SiteMap" RunAt="server" />

此外,可以通过在web.sitemap中进行设置,可以控制权限,这样就能仅通过一个XML文件,让具有不同权限的人看到不同的菜单。要设置权限只要在web.sitemap中的子节点加上一个roles属性,然后在web.config文件中将securityTrimmingEnabled设置为True就可以了。下面是例子。
<siteMap>
<siteMapNode title="Home" description="" url="default.aspx">
<siteMapNode title="Announcements" url="Announcements.aspx"
description="Information for all employees" />
<siteMapNode title="Salaries" url="Salaries.aspx"
description="Salary data" roles="Managers" />
<siteMapNode>
</siteMap>
<configuration>
<system.web>
<siteMap>
<providers>
<remove name="AspNetXmlSiteMapProvider" />
<add name="AspNetXmlSiteMapProvider"
type="System.Web.XmlSiteMapProvider, System.Web,
"
securityTrimmingEnabled="true"
siteMapFile="web.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
浙公网安备 33010602011771号