站点地图的应用还是比较普遍的。哪怕一个简单的个人主页,也会有站点地图。今天我们做一个小例子,作用只是抛砖引玉。
首先,添加一个Web.sitemap,注意我们这里不改变该文件的名字。添加如下代码:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="a.aspx" title="首页" description="点此返回首页">
<siteMapNode url="b.aspx" title="根目录B页" description="点此返回首页" />
<siteMapNode url="kongjian1.aspx" title="概念页" description="" />
<siteMapNode url="" title ="第一个子目录" description ="">
<siteMapNode url="~/one/a.aspx" title="第一个子目录A页" description ="" />
<siteMapNode url="~/one/b.aspx" title ="第一个子目录B页" description ="" />
</siteMapNode>
<siteMapNode url="" title ="one目录的子目录" description ="">
<siteMapNode url="~/one/cone/a.aspx" title ="one目录的子目录a" description ="" />
<siteMapNode url="~one/cone/b.aspx" title="one目录的子目录b" description ="" />
</siteMapNode>
<siteMapNode url="" title="TWO目录" descripition="这里是介绍">
<siteMapNode url="~/two/a.aspx" title="TWO目录的子目录a" descripition="这里是介绍"/>
<siteMapNode url="~/two/b.aspx" title="TWO目录的子目录b" descripition="" />
</siteMapNode>
<!--<siteMapNode siteMapFile ="~/mysm.sitemap" />-->
<!--<siteMapNode provider="sqlsitemap" />-->
<siteMapNode url="sitemap.aspx" title="动态修改内容中" description ="动态修改内存中的站点地图" />
</siteMapNode>
</siteMap>
然后我们在default.aspx页添加一个TreeView控件,配置它的数据源为站点地图。就会如下图显示:
前台代码:
protected void Page_Load(object sender, EventArgs e)
{
//首先这里注册一个事件,也就是说在访问CurrentNode属性的时候触发这个事件(委托)
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}
SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{//我们自定义的处理方法
SiteMapNode CurrentNode = SiteMap.CurrentNode.Clone(true);
//上面这句,获取并创建当前节点的副本,并同时复制他的上级节点
SiteMapNode TempNode = CurrentNode;
int id = nid();
int page = npage();
//从下面方法中得到变量
if (id > 0)
{
TempNode.Url = TempNode.Url + "?id=" + id.ToString();
}
if (id > 0 && page >= 0)
{
TempNode.Url = TempNode.Url + "?id=" + id.ToString();
}
else if (page >= 0)
{
TempNode.Url = TempNode.Url + "?page" + page.ToString();
}
return TempNode;
}
private int nid()
{//随便设置的数
return 12;
}
private int npage()
{
return 3;
}
}
显示效果:
我们只需要点击相应连接,就会返回相应页面。