Specifying ASP.NET MultiView Views in the Menu Sitemap
In ASP.NET by using Views inside the MultiView you can, effectively, have several different pages inside a single ASPX file. Here's how to have those "additional pages" appear on your site's menus so that when a user clicks on a menu choice, the user not only goes to the right page but also has the page displaying the right View.
The trick here is to take advantage of a feature of the sitemap. In order to support the SiteMapPath control, each SiteMapNode in the in the sitemap must have a unique URL (or none at all). However that "uniqueness" includes whatever querystring you choose to include in the SiteMapNode's url attribute. There's nothing stopping you from having these two entries in your sitemap:
<siteMapNode url="~/Login.aspx?view=0"
title="Show View 0"
description="Display View 0 in a MultiView"/>
<siteMapNode url="~/Login.aspx?view=1"
title="Show View 1"
description="Display View 1 in a MultiView"/>
While the url attribute in these sitemapnodes point to the same page, they have different querystrings. If the page "MultiViewPage.aspx" has a MultiView on it, then this code in the Page_Load event will (when the user first sees the page) cause the View control specified in the querystring to be displayed:
if (!this.IsPostBack)
{
string pos = this.Request.QueryString["view"];
if (pos != null)
{
this.MultiView1.ActiveViewIndex = int.Parse(pos);
}
}
Posted by Peter Vogel on 05/31/2011