我希望我的 ASP.NET 站点有简单的菜单字符串,也就是面包屑。我已经创建了包含所有必需元素的站点地图并注册到 Web.config。例如:
<siteMap>
<siteMapNode url="Default.aspx" title="Home" >
<siteMapNode url="hosting/Default.aspx" title="Hosting" />
<siteMapNode url="software/Default.aspx" title="Software">
<siteMapNode url="firefox/Default.aspx" title="Firefox">
<siteMapNode url="Download.aspx" title="Download" />
<siteMapNode url="Support.aspx" title="Support" />
</siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap>
并创建了一个放置在 Masterpage 上的控件。这是菜单生成代码:
protected void Control_Load(Object sender, EventArgs e)
{
string path = String.Empty;
StringCollection list = new StringCollection();
foreach (string str in Request.Url.Segments)
{
path += str;
string link = String.Format("<a href=\"{0}://{1}{2}\">{3}</a>", Request.Url.Scheme, Request.Url.Authority, path, this.names[str]);
list.Add(link);
}
foreach (string str in list)
{
menu += String.Concat(str, SeparatorLine);
}
menu = menu.Remove(menu.LastIndexOf(SeparatorLine));
}
但它使用像 { { "/", "Home" }, { "hosting/", "Hosting" }, { "software/", "Software" } .. } 这样的 StringDictionary
如何使用对站点地图的查询而不是它?或者可能是其他东西,不是站点地图,而是事先发明的。