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:
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:
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.
Describes site maps, which define the logical structure of a Web site.
Describes how to improve the security of the navigation features.
Provides step-by-step instructions for how to a navigation path (or breadcrumb) for navigation in individual ASP.NET Web pages.
Provides step-by-step instructions for how to specify the visual appearance of site-navigation 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.
Provides step-by-step instructions for how to return a subset of the of site-map nodes.
Provides step-by-step instructions for how to dynamically modify site-map nodes.
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.
Provides step-by-step instructions for how to localize the title and description of site-map nodes.
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.
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.
Provides a step-by-step tutorial on how to implement security trimming to hide the navigational links for restricted files.
Provides information about security issues associated with data access in Web sites.
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.