asp.net 2.0中提供了两种导航控件

  •    TreeView控件
    • 可扩展和折叠的分支
    • 节点是可导航, 可选择的,也可添加选择框
    • TreeNode对象定义的内容
    • TreeNodes可以通过声明方式,写代码方式或通过数据邦定方式添加
    • TreeNodes可以按需装载
  •     Menu控件
    • Web页面中提供下拉或弹出式的菜单
    • Items 是导航的或可选择的
    • Menu 控件显示可以是竖直方向也可以是水平方向
    • MenuItems可以通过声明方式,写代码方式或通过数据邦定方式添加

同时提供了一个用于连接数据源的控件SiteMapDataSourceTreeView控件Menu控件可以利用它实现自身于数据源的绑定。SiteMapDataSource它是通过数据邦定方式添加同时提供了一个用于连接数据源的控件SiteMapDataSourceTreeView控件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 &amp; Certification" url="SiteMapDataSource.aspx?id=training" />
        
<siteMapNode title="Books" url="SiteMapDataSource.aspx?id=books" />
        
<siteMapNode title="Events &amp; Webcasts" url="SiteMapDataSource.aspx?id=events" />
        
<siteMapNode title="Patterns &amp; 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来设置其导航到的页面。

如果要将TreeViewMenu绑定到SiteMapDataSource只需按以下方式定义,其中SiteMapSiteMapDataSource 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>

 

 


 

posted on 2005-12-25 19:55  圣炎¢天乐  阅读(2236)  评论(1编辑  收藏  举报