根据URL参数显示网站地图
2011-05-27 15:04
405 查看
一 写法一:
1. 网站地图文件Web.sitemap
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="首页" description="首页" resourceKey="root">
<siteMapNode url="~/Category.aspx" title="分类页" description="分类页" resourceKey="category">
<siteMapNode url="~/Item.aspx" title="单品页" description="单品页" resourceKey="item" />
</siteMapNode>
</siteMapNode>
</siteMap>
2. 页面上增加站点地图控件
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
页面就会显示出相应的页面站点地图名:
首页、分类页、单品页 等
3. 覆写方法,使得面包屑显示的名称更为人性化
比如女装分类页面,地图上不只是显示:首页->分类页,而是显示为:首页->女装分类。
这样就要在 分类页Category.aspx ,Page_Load里增加事件:
if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["name"]))
{
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
}
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
事件说明:
SiteMapResolve事件处理动态地改变目前的SiteMapNode。
本页面覆写事件方法thisPage_SiteMap_SiteMapResolve:
SiteMapNode thisPage_SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
// 只需要在一个执行一个请求。
SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
if (SiteMap.CurrentNode != null)
{
// SiteMap.CurrentNode是只读的,所以我们需要一个克隆操作。
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
currentNode.Title = Request.QueryString["name"];
// Use the changed one in the breadcrumb.
return currentNode;
}
return null;
}
这样URL :/Category.aspx?name=女装分类 ,显示为 : 首页 > 女装分类
4. 覆写 单品页 站点地图面包屑。
在覆写前,显示如下 首页 > 分类页 > 单品页
要显示如下: 首页 > 女装分类 > 时尚外套
同上面增加页面
if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["name"]))
{
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
}
覆写方法:
SiteMapNode thisPage_SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
// 只能请求一次
SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
if (SiteMap.CurrentNode != null)
{
// SiteMap.CurrentNode是只读的,所以我们需要一个克隆操作。
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
currentNode.Title = Request.QueryString["name"];
//从数据库取出当前单品的分类名
currentNode.ParentNode.Title = Database.GetCategoryByItem(Request.QueryString["name"]);
currentNode.ParentNode.Url = "/Category.aspx?name=" + Database.GetCategoryByItem(Request.QueryString["name"]);
// 返回改变后的面包屑
return currentNode;
}
return null;
}
二、另外种写法:同样也是针对相同页面有不同参数传递
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //文章类型ID
SiteMapID = Request.QueryString.Get("SiteMapID"); requestURL = Request.Url.ToString().Replace("/", ""); SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); } }
SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e) { // 只需要在一个执行一个请求。 //SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); SiteMapNode currentNode = null; //如果当前被请求页的SiteMapNode不为空,就把当前页的SiteMapNode赋值个新副本 if (SiteMap.CurrentNode != null) { currentNode = SiteMap.CurrentNode.Clone(true); } else { //如果为空,根据URL找到对应节点赋值给currentNode if (SiteMapID != "" && requestURL.Contains(SiteMapID)) { SiteMapNode smn = SiteMap.Provider.FindSiteMapNode("~/CommonPage/ShowList.aspx?SiteMapID=" + SiteMapID); currentNode = smn; } } return currentNode; }部分Web.sitemap
<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="CommonPage/index.aspx" title="首页" description="首页"> <siteMapNode url="" title="组织机构" description="" > <siteMapNode url="CommonPage/ShowContent.aspx?ContentID=42504711-4BE0-4C04-BC22-9D071FC7D3B2" title="AOC" description="AOC" /> </siteMapNode> <siteMapNode url="" title="追溯指南" description="" > <siteMapNode url="CommonPage/ShowList.aspx?CategoryID=3A33D061-97D7-40B0-8618-231570317DCF" title="解决方案" description="解决方案" > <siteMapNode url="CommonPage/ShowList.aspx?SiteMapID=3A33D061-97D7-40B0-8618-231570317DCF" title="正文" description="正文" /> </siteMapNode> <siteMapNode url="CommonPage/ShowList.aspx?CategoryID=6669190F-F5DB-4A1A-BB54-A2EC66C58FD4" title="应用案例" description="应用案例" > <siteMapNode url="CommonPage/ShowList.aspx?SiteMapID=6669190F-F5DB-4A1A-BB54-A2EC66C58FD4" title="正文" description="正文" /> </siteMapNode> </siteMapNode>
1. 网站地图文件Web.sitemap
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="首页" description="首页" resourceKey="root">
<siteMapNode url="~/Category.aspx" title="分类页" description="分类页" resourceKey="category">
<siteMapNode url="~/Item.aspx" title="单品页" description="单品页" resourceKey="item" />
</siteMapNode>
</siteMapNode>
</siteMap>
2. 页面上增加站点地图控件
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
页面就会显示出相应的页面站点地图名:
首页、分类页、单品页 等
3. 覆写方法,使得面包屑显示的名称更为人性化
比如女装分类页面,地图上不只是显示:首页->分类页,而是显示为:首页->女装分类。
这样就要在 分类页Category.aspx ,Page_Load里增加事件:
if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["name"]))
{
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
}
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
事件说明:
SiteMapResolve事件处理动态地改变目前的SiteMapNode。
本页面覆写事件方法thisPage_SiteMap_SiteMapResolve:
SiteMapNode thisPage_SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
// 只需要在一个执行一个请求。
SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
if (SiteMap.CurrentNode != null)
{
// SiteMap.CurrentNode是只读的,所以我们需要一个克隆操作。
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
currentNode.Title = Request.QueryString["name"];
// Use the changed one in the breadcrumb.
return currentNode;
}
return null;
}
这样URL :/Category.aspx?name=女装分类 ,显示为 : 首页 > 女装分类
4. 覆写 单品页 站点地图面包屑。
在覆写前,显示如下 首页 > 分类页 > 单品页
要显示如下: 首页 > 女装分类 > 时尚外套
同上面增加页面
if (!IsPostBack && !string.IsNullOrEmpty(Request.QueryString["name"]))
{
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
}
覆写方法:
SiteMapNode thisPage_SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
// 只能请求一次
SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(thisPage_SiteMap_SiteMapResolve);
if (SiteMap.CurrentNode != null)
{
// SiteMap.CurrentNode是只读的,所以我们需要一个克隆操作。
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
currentNode.Title = Request.QueryString["name"];
//从数据库取出当前单品的分类名
currentNode.ParentNode.Title = Database.GetCategoryByItem(Request.QueryString["name"]);
currentNode.ParentNode.Url = "/Category.aspx?name=" + Database.GetCategoryByItem(Request.QueryString["name"]);
// 返回改变后的面包屑
return currentNode;
}
return null;
}
二、另外种写法:同样也是针对相同页面有不同参数传递
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //文章类型ID
SiteMapID = Request.QueryString.Get("SiteMapID"); requestURL = Request.Url.ToString().Replace("/", ""); SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); } }
SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e) { // 只需要在一个执行一个请求。 //SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); SiteMapNode currentNode = null; //如果当前被请求页的SiteMapNode不为空,就把当前页的SiteMapNode赋值个新副本 if (SiteMap.CurrentNode != null) { currentNode = SiteMap.CurrentNode.Clone(true); } else { //如果为空,根据URL找到对应节点赋值给currentNode if (SiteMapID != "" && requestURL.Contains(SiteMapID)) { SiteMapNode smn = SiteMap.Provider.FindSiteMapNode("~/CommonPage/ShowList.aspx?SiteMapID=" + SiteMapID); currentNode = smn; } } return currentNode; }部分Web.sitemap
<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="CommonPage/index.aspx" title="首页" description="首页"> <siteMapNode url="" title="组织机构" description="" > <siteMapNode url="CommonPage/ShowContent.aspx?ContentID=42504711-4BE0-4C04-BC22-9D071FC7D3B2" title="AOC" description="AOC" /> </siteMapNode> <siteMapNode url="" title="追溯指南" description="" > <siteMapNode url="CommonPage/ShowList.aspx?CategoryID=3A33D061-97D7-40B0-8618-231570317DCF" title="解决方案" description="解决方案" > <siteMapNode url="CommonPage/ShowList.aspx?SiteMapID=3A33D061-97D7-40B0-8618-231570317DCF" title="正文" description="正文" /> </siteMapNode> <siteMapNode url="CommonPage/ShowList.aspx?CategoryID=6669190F-F5DB-4A1A-BB54-A2EC66C58FD4" title="应用案例" description="应用案例" > <siteMapNode url="CommonPage/ShowList.aspx?SiteMapID=6669190F-F5DB-4A1A-BB54-A2EC66C58FD4" title="正文" description="正文" /> </siteMapNode> </siteMapNode>
相关文章推荐
- 根据URL参数显示网站地图
- 根据url 参数,页面显示不同背景图片
- 原生js根据url参数动态显示静态页面内容
- angluar根据链接的url参数的不同实现显示与隐藏
- 新窗口window.open() url不显示参数,后面页面可以接收参数 ——后面页面为html
- Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数
- 详解nginx rewrite和根据url参数location
- 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
- [转载]url带中文参数显示乱码的问题
- 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
- asp.net url带中文参数显示乱码的问题
- JS根据key值获取URL中的参数值及把URL的参数转换成json对象
- 使用谷歌地图API根据坐标显示地图
- JS根据参数名称获取URL中参数值
- 页面根据不同Url显示不同Title以及不同的Mete
- 根据传递的目录名,文件名参数转换输出外部访问的URL地址
- 用nginx做ws代理,并根据url参数选择后台服务器
- 百度地图api根据地图缩放等级显示不同的marker点,功能二
- 根据指定的经纬度显示地图位置
- 使用rxjava2.0根据url获取bitmap,并显示到imageview上