Compartilhar via


ASP.NET Site Navigation

You can use ASP.NET site-navigation features to provide a consistent way for users to navigate your site. As your site grows, and as you move pages around in the site, it can become difficult to manage all of the links. ASP.NET site navigation enables you to store links to all of your pages in a central location, and render those links in lists or navigation menus on each page by including a specific Web server control.

To create a consistent, easily managed navigation solution for your site, you can use ASP.NET site navigation. ASP.NET site navigation offers the following features:

  • Site maps   You can use a site map to describe the logical structure of your site. You can then manage page navigation by modifying the site map as pages are added or removed, instead of modifying hyperlinks in all of your Web pages.

  • ASP.NET controls   You can use ASP.NET controls to display navigation menus on your Web pages. The navigation menus are based on the site map.

  • Programmatic control   You can work with ASP.NET site navigation in code to create custom navigation controls or to modify the location of information that is displayed in a navigation menu.

  • Access rules   You can configure access rules that display or hide a link in your navigation menu.

  • Custom site-map providers   You can create custom site-map providers that allow you to work with your own site-map back end (for example, a database where you store link information) and plug your provider into the ASP.NET site-navigation system.

This overview contains the following sections:

  • How Site Navigation Works

  • Site-Navigation Controls

  • Site-Navigation API

  • Relationships Between Site-Navigation Components

  • Related Topics

How Site Navigation Works

With ASP.NET site navigation, you describe the layout of your site as a hierarchy. For example, a fictional online computer store might have a site comprised of eight pages, which are laid out in the following manner.

Home
   Products
      Hardware
      Software
   Services
      Training
      Consulting
      Support

To use site navigation, start by creating a site map, or a representation of your site. You can describe the hierarchy of your site in an XML file, but other options are also available. For more information and an example, see ASP.NET Site Maps.

After you create a site map, you can display the navigation structure on an ASP.NET page by using a site-navigation control. For an example, see How to: Add Simple Site Navigation.

Site-Map Load Process

The default ASP.NET site-map provider loads site-map data as an XML document and caches it as static data when the application starts. An excessively large site-map file can use a lot of memory and CPU power at load time. The ASP.NET site-navigation features depend on file notifications to keep navigation data up-to-date. When a site-map file is changed, ASP.NET reloads the site-map data. Make sure you configure any virus-scanning software so that it does not modify site-map files. For more information, see Securing ASP.NET Site Navigation.

Creating a site map that reflects the structure of your site is one part of the ASP.NET site-navigation system. The other part is to display your navigation structure in your ASP.NET Web pages so that users can move easily around your site. You can easily build navigation into your pages by using the following ASP.NET site-navigation controls:

  • SiteMapPath   This control displays a navigation path — which is also known as a breadcrumb or eyebrow — that shows the user the current page location and displays links as a path back to the home page. The control provides many options for customizing the appearance of the links.

  • TreeView   This control displays a tree structure, or menu, that users can traverse to get to different pages in your site. A node that contains child nodes can be expanded or collapsed by clicking it.

  • Menu   This control displays an expandable menu that users can traverse to get to different pages in your site. A node that contains child nodes is expanded when the cursor hovers over the menu.

If you add a SiteMapPath control to the Training page from the online computer store in the preceding example, the SiteMapPath control will display something like the following, with Home and Services rendered as hyperlinks:

Home > Services > Training

You can use the SiteMapPath control to create site navigation without code and without explicit data binding. The control can read and render the site-map information automatically. However, if necessary, you can also customize the SiteMapPath control with code. For an example, see How to: Programmatically Modify Site-Map Nodes in Memory.

The SiteMapPath control allows users to navigate backward from the current page to pages higher in the site hierarchy. However, the SiteMapPath control does not allow you to navigate forward from the current page to another page deeper in the hierarchy. The SiteMapPath control is useful in newsgroup or message-board applications when users want to see the path to the article that they are browsing.

With the TreeView or Menu controls, users can open nodes and navigate directly to a specific page. These controls do not directly read the site map, as the SiteMapPath control does. Instead, you add a SiteMapDataSource control to a page that can read the site map. You then bind the TreeView or Menu control to the SiteMapDataSource control, resulting in the site map being rendered on the page. The TreeView control will display something like the following:

- Home

   - Services

      + Training

Note

An easy way to display the SiteMapPath, TreeView, or Menu controls on all pages in your site is to create a master page and add the controls to that page. For more information, see ASP.NET Master Pages.

You can use navigation controls to add site navigation to your pages with little or no code, but you can also work with site navigation programmatically. When your Web application runs, ASP.NET exposes a SiteMap object that reflects the site-map structure. All of the members of the SiteMap object are static. The SiteMap object, in turn, exposes a collection of SiteMapNode objects that contain properties for each node in the map. (When you use the SiteMapPath control, the control works with the SiteMap and SiteMapNode objects to render the appropriate links automatically.)

You can use the SiteMap, SiteMapNode, and SiteMapProvider objects in your own code to traverse the site-map structure or create a custom control to display site-map data. You cannot write to the site map, but you can alter site-map nodes in the instance of the object. For more information, see How to: Programmatically Modify Site-Map Nodes in Memory or How to: Programmatically Enumerate Site-Map Nodes.

Relationships Between Site-Navigation Components

The following illustration shows the relationships between the ASP.NET site-navigation components.

Relationship between site navigation classes

Title

Description

ASP.NET Site Maps

Describes site maps, which define the logical structure of a Web site.

Securing ASP.NET Site Navigation

Describes how to improve the security of the navigation features.

How to: Add Simple Site Navigation

Provides step-by-step instructions for how to a navigation path (or breadcrumb) for navigation in individual ASP.NET Web pages.

How to: Customize the Appearance of SiteMapPath Web Server Controls

Provides step-by-step instructions for how to specify the visual appearance of site-navigation controls.

How to: Display Site-Map Data in Non-Hierarchical Web Server Controls

Provides step-by-step instructions for how to bind site-map data to non-hierarchical controls, such as the DropDownList, CheckBoxList, and other controls that display data in a linear, or flat, format.

How to: Filter the Nodes Retrieved by SiteMapDataSource Web Server Controls

Provides step-by-step instructions for how to return a subset of the of site-map nodes.

How to: Programmatically Enumerate Site-Map Nodes

Provides step-by-step instructions for how to use the SiteMap and SiteMapNode objects in your own code to create custom navigation.

How to: Programmatically Modify Site-Map Nodes in Memory

Provides step-by-step instructions for how to dynamically modify site-map nodes.

How to: Configure Multiple Site Maps and Site-Map Providers

Provides step-by-step instructions for how to use more than one site-map file or site-map provider to describe the navigation structure of a complete Web site.

How to: Localize Site-Map Data

Provides step-by-step instructions for how to localize the title and description of site-map nodes.

ASP.NET Site Navigation Providers

Describes how to provide information about your site in a database or in a site-map file that has a different layout than the Web.sitemap file.

Walkthrough: Adding Site Navigation to a Web Site

Provides a step-by-step tutorial on how to configure a site map and how to use controls that rely on the site map to add navigation to pages in the Web site.

Walkthrough: Filtering Site-Map Nodes Based on Security Roles

Provides a step-by-step tutorial on how to implement security trimming to hide the navigational links for restricted files.

Securing Data Access in ASP.NET

Provides information about security issues associated with data access in Web sites.

ASP.NET Application Security in Hosted Environments

Provides links to topics about how to configure ASP.NET and the ASP.NET environment to improve the security of an ASP.NET application Web server.

Reference

System.Web.UI.WebControls.SiteMapPath

System.Web.UI.WebControls.SiteMapDataSource

System.Web.UI.WebControls.TreeView

System.Web.UI.WebControls.Menu

System.Web.SiteMapProvider

System.Web.SiteMap

System.Web.SiteMapNode

System.Web.SiteMapResolveEventHandler

siteMap Element (ASP.NET Settings Schema)