ASP.NET 实践:通过编程列举网站地图的节点

在 Web 页面中使用导航控件添加页面导航功能只需要编写少量代码(甚至不需要代码)即可实现,但是也可以对网站导航进行可编程控制。当 Web 应用程序运行时,ASP.NET 会创建反映网站地图结构的 SiteMap 对象。该 SiteMap 对象在运行时会暴露包含每个网站地图节点属性的 SiteMapNode 对象集。

类似 SiteMapPath 控件的导航控件与 SiteMapSiteMapNode 对象协同合作,并自动呈现出合适的链接内容。

可以在代码中使用 SiteMapSiteMapNode 对象自定义网站导航。

实例

下例代码说明了如何显示当前页面的所有子节点标题。网站地图文件中必须列有当前页面的路径,如果网站地图文件没有列出当前页面的路径,代码第一行对 SiteMap 对象的使用将引发 NullReferenceException 异常。

<%@ Page language="c#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<Script runat="server">

  private void Page_Load(object sender, System.EventArgs e)
  {
    try
    {
      string LabelText = "";

      // Displays the title of the current node.
      Label_CurrentNode.Text = SiteMap.CurrentNode.Title;

      // Determines if the current node has child nodes.
      if (SiteMap.CurrentNode.HasChildNodes)
      {
        foreach (SiteMapNode childNodesEnumerator in SiteMap.CurrentNode.ChildNodes)
        {
          // Displays the title of each node.
          LabelText = LabelText + childNodesEnumerator.Title + "<BR>";
        }
      }

      Label_ChildNodes.Text = LabelText;
    }
    catch (System.NullReferenceException ex)
    {
      Label_CurrentNode.Text = "The current file is not in the site map.";
    }
    catch (Exception ex)
    {
      Label_CurrentNode.Text = "Generic exception: " + e.ToString();
    }
  }

</Script>

<html>
  <head>
    <title>Enumerating Child Site Map Nodes</title>
  </head>
  <body>
    <form id="Form1" runat="server"
      method="post">

      <h2>Current Node</h2>
      <asp:Label id="Label_CurrentNode" runat="Server"></asp:Label>

      <h2>Child Nodes</h2>
      <asp:Label id="Label_ChildNodes" runat="Server"></asp:Label>

      <H2>Verify Against Site Map</H2>
      <asp:SiteMapDataSource id="SiteMapDataSource1" runat="server" />
      <asp:TreeView id="TreeView1" runat="server"
        dataSourceID="SiteMapDataSource1">
      </asp:TreeView>
      
    </form>
  </body>
</html>
安全性

可以针对于特定安全角色的用户在导航结构隐藏相应的链接信息。

转载于:https://www.cnblogs.com/Laeb/archive/2006/12/11/589067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值