利用SiteMapPath控件做论坛导航(也适合其它系统)

首先,论坛非常简单,就三个网页,全部用的一个模板做成。

第一个网页(default.aspx):用于显示论坛的类别,点击相应的类别,将categoryid传到下一页。

第二个网页(list.aspx):用于显示某类别下面的文章列表。利用参数categoryid进行区分。如list.aspx?categoryid=1表示第一大类,list.aspx?categoryid=2表示第二大类。点击相应文章之后,将文章编号(tid)传到下一个网页。

第三个网页(content.aspx):用于显示文章内容和回复内容。根据参数tid区别不同的文章。如content.aspx?tid=1

在第二个网页和第三个网页里都用到了参数,因此用SiteMapPath控件做导航是有点难度的,但我们可以动态修改当前结点和父结点的url来实现。

第一步:编写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="网站首页">
<siteMapNode url="list.aspx?categoryid=1" title="asp.net" description="网站开发" >
<siteMapNode url="content.aspx" title="文章正文"/>
</siteMapNode>
<siteMapNode url="list.aspx?categoryid=2" title="powerbuilder" description="信息系统开发" >
<siteMapNode url="" title="文章正文"/>
</siteMapNode>
<siteMapNode url="list.aspx?categoryid=3" title="english" description="英语学习" >
<siteMapNode url="" title="文章正文"/>
</siteMapNode>
</siteMapNode>
</siteMap>

这里,我的论坛里只有三个大类:asp.net,powerbuilder和English.第二级导航因为类别少,因此完全可以在这里面写出来。但第三级导航,文章千千万万,不可能全部写出来。因此,我只需要写一次url="content.aspx"就行了,其它的全空着,目的就是要把第三级导航在网页上显示出来。

第二步:修改模板,插入SiteMapPath控件,修改它的RenderCurrentNodeAsLink="True" ,注意这点非常重要。

第三步:修改content.aspx页。其它两个网页SiteMapPath控件能正常显示,因此没有必要修改。

首先,在Page_Load里面注册事件

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
bind();
//注册SiteMap事件
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}

接着,编写事件代码:

private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
//克隆当前结点和父结点
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
//获取文章编写
int tid = Convert.ToInt32(Request.QueryString["tid"]);
if (0 != tid)
{
//修改当前结点的url
currentNode.Url = currentNode.Url + "?tid=" + tid.ToString();
//GetcId(tid)是一个自己编写的方法,通过文章编号返回类别编号
int categoryid = GetId(tid);
//修改父结点的url  
currentNode.ParentNode.Url = "list.aspx?categoryid=" + categoryid.ToString();
//修改父结点的title, GetName(categoryid)也是自己编写的一个方法,通过类别编号获取类别名称
currentNode.ParentNode.Title = GetName(categoryid);
}
return currentNode;
}

注意,一定要修改父结点的url和title,不然你的SiteMapPath控件,显示就会不对。

最后,为了不影响别的网页,在Page_Unload里注销事件:

protected void Page_Unload(object sender, EventArgs e)
{
SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}

到此,导航就完成了。不管url如何变化,我们都可以动态修改它,为我们服务。

转载于:https://www.cnblogs.com/death029/archive/2011/08/04/2127122.html

利用SiteMapPath控件做论坛导航相关推荐

  1. C#使用SiteMapPath控件显示地图导航

    使用Visual Studio创建一个C#的Web项目,然后创建Web.sitemap [添加]--[新建项] 创建成功的Web.sitemap初始内容如下: <?xml version=&qu ...

  2. VB.net小技巧——VB中利用TreeView控件和Box控件做知识备忘

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VB.net小技巧--VB中利用TreeView控件和Box控件做知识备忘 这里不涉及代码的展示,主要是为了阐述一种做笔记的思想. 为 ...

  3. “眉毛导航”——SiteMapPath控件的使用(ASP.NET)

    今天做网站的时候,用到了SiteMapPath控件,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们. SiteMapPath"会显示一个导航路径(也称为痕迹导航或眉毛导航),此路径为用 ...

  4. 利用tab_control控件在对话框中加入属性页的方法详细介绍

    在对话框中加入属性页 方案一 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab C ...

  5. ASP中利用OWC控件实现图表功能详解[zz]

    ASP中利用OWC控件实现图表功能详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图, ...

  6. Delphi利用MSCOMM控件进行GPS数据采集

    1.准备 GPS(Global Positioning System),即全球定位系统,利用GPS卫星的测距和测时功能进行全球定位,在许多系统中,如机场导航系统,出租车辆管理和调度系统.江河流域的灾害 ...

  7. ASP.Net学习笔记002--ASP.Net服务端控件做了什么2

    ASP.Net学习笔记002--ASP.Net服务端控件做了什么2 以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交 ...

  8. Windows10下VB6.0开发——利用PictureBox控件实现数据点实时绘图

    前言:VB中可以利用PictureBox控件实现数据点实时绘图功能. 1. 控件PictureBox   下面是PictureBox的图标:   将该控件拖到目标位置后调整它的形状大小,修改它的背景色 ...

  9. C#利用Picturebox控件显示图片

    源文章:https://blog.csdn.net/liyuqian199695/article/details/54098938 C#利用Picturebox控件显示图片 1.Picturebox控 ...

最新文章

  1. FreeBSD最小化安装没有man解决方法
  2. Rabbit 安装步骤
  3. iOS:切换视图的第三种方式:UITabBarController标签栏控制器
  4. WPF模板(二)应用
  5. APACHE如何里一个站点绑定多个域名?用ServerAlias
  6. Bootstrap3系列:下拉菜单
  7. abap 一些小知识点的总结
  8. SAP CDS view自学教程之八:SAP Fiori Elements里不同类型的annotation
  9. 漫步线性代数十二——网络
  10. 服务器常见远程管理网口及登录方式
  11. wdos相关问题解答
  12. opencv之使用open3d可视化opencv加载的点云数据
  13. Oracle宣布JDK 6死缓:计划赶不上变化
  14. 【R语言教程】不一样的零基础教程,数据分析到论文写作一站式完成
  15. 读懂Redis源码,我总结了这7点心得
  16. 2020考研数学一大纲之完全解析(四)
  17. 编解码学习笔记(七):微软Windows Media系列
  18. Sketch Learning - SVG 是什么?
  19. 2019天梯赛第四次训练赛
  20. java练习 家庭收支管理小练习

热门文章

  1. tesseract 配置文件
  2. php图片滑动的属性,JavaScript_javascript图片滑动效果实现,本文为大家分享了javascript图片 - phpStudy...
  3. 视频直播 > 最佳实践 > 如何降低延时
  4. 大V诞生记 —— 谁是VMware?
  5. Shiro学习总结(3)——Apache Shiro身份认证
  6. mysql in 索引_mysql-IN子句不使用索引
  7. 基于flask的网页聊天室(四)
  8. JS修改标签中的文本且不影响其中标签
  9. 将ubuntu的apache2修改成https链接
  10. 当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式