Hello,
I have started a new ASP.NET 4 WebForm application. By default, the Site.Master file contains the following menu:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
</Items>
</asp:Menu>
This menu contains two blocks: "Home" and "About". I like this structure. However, I want to populate the NavigationMenu
based upon the contents of my Web.sitemap file. At this time, this file looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode>
<siteMapNode url="/Default.aspx" title="Home" description=""></siteMapNode>
<siteMapNode url="/Products/List.aspx" title="Products" description=""></siteMapNode>
</siteMapNode>
</siteMap>
I changed the NavigationMenu
code to look like the following:
<asp:SiteMapDataSource ID="mySiteMapDataSource" runat="server" />
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" DataSourceID="mySiteMapDataSource" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" />
My problem is, this approach creates a small block that represents the menu. When the user hovers over this, two sub-menu items appear "Home" and "Products". Oddly, the web.sitemap file only alows for one siteMapNode
as the child of the siteMap
element. How do I make it such that "Home" and "Products" appear in the same way that "Home" and "About" did, while giving me the flexibility of using the sitemap?
Thank you!