ASP.NET 中的面包屑导航






4.32/5 (22投票s)
本文介绍如何根据网站的目录结构为您的网站创建面包屑导航。
不附加文件名面包屑
附加文件名面包屑
引言
许多流行的网站会在每页的顶部附近有一个导航菜单,以便用户可以轻松地追溯他们回到网站的路径。菜单通常看起来像这样(请注意,这些链接是无效的)
这种导航被称为“面包屑”导航,因为它类似于在森林中徒步时留下痕迹的面包屑,这样你就可以找到出路。
在版本 2 中,我已将脚本转换为自定义控件。
本文假设您对 ASP.NET 有实际的了解。要使用此控件,您必须具备编译简单 C# 脚本的能力和知识。
背景
我曾尝试过几次学习 ASP.NET,但总是因为日常工作而分心。我完成了这个小项目,以便能够继续学习更多关于 ASP.NET 的知识。由于我才刚开始,我非常感谢您对我的代码提出反馈:我是否有任何明显错误的地方?如何才能使脚本更好?这个代码片段对您有用吗?
代码工作原理
假设我们有一个网站,具有以下目录结构
/
/subdir/
/subdir/subsubdir/
创建面包屑导航菜单就像从当前页面的路径中提取目录名称,并替换相应的“友好”名称一样简单。(“友好”的意思是更易读、更友好的形式,因此,与其看到目录名称 subdir,不如看到友好名称 Sub Directory。)所以,如果我们正在查看页面 /subdir/subsubdir/Default.aspx,我们的菜单将如下所示
首页 > 子目录 > 子子目录 > Default.aspx
这假设我们将 Sub Directory 分配给了 subdir,将 Sub Sub Directory 分配给了 subsubdir。这也假设用户已选择在面包屑的末尾显示文件名。
在控件的加载事件期间,由 Control_Load
事件处理程序处理,每个部分的超链接是通过将每个目录名称依次附加到网站的根 URL 来生成的。
最后,在解析文件的路径并创建面包屑之后,在 Render
方法中,通过 HtmlTextWriter
对象将生成的 HTML 发送到浏览器。
友好名称的分配将在下一节中介绍。
使用代码
您需要修改 BreadCrumbControl
构造函数中名为 labels
的 HybridDictionary
对象中的目录名称和“友好”名称。您需要更改它们以匹配您网站的目录结构。
labels.Add ("subdir", "Sub Directory");
labels.Add ("subsubdir", "Sub Sub Directory");
每当向您的网站添加新目录时,都必须为其添加一个条目,然后重新编译控件。否则,页面将包含不完整的回溯路径。
如果您有多个同名目录(例如,images),您只需要为该目录名称创建一个条目。
我选择不使用 Visual Studio 来创建此控件的第一个版本。要编译代码,您可以使用类似以下的命令行
csc /out:BreadCrumbs.dll /target:library BreadCrumbs.cs
成功编译后,将 BreadCrumbs.dll 放在网站根目录的 \bin 文件夹中。
要使用代码,请在 ASP.NET 页面的顶部放置以下 Register
指令
<%@ Register TagPrefix="Sagara" Namespace="Sagara.BreadCrumbs"
Assembly="BreadCrumbs" %>
要显示面包屑控件,请在页面主体中您希望显示面包屑的位置放置一个自定义控件标签
<Sagara:BreadCrumbControl id="breadcrumb" runat="Server" />
您可能需要修改四个 public
属性中的一个或多个,以自定义控件的外观。这些属性具有以下功能
变量 | 函数 |
---|---|
bool ShowFileName |
如果为 true ,则显示文件名和分隔符(例如:首页 > 子目录 > Default.aspx)。如果为 false ,则不显示文件名或分隔符(例如:首页 > 子目录)。默认值为 false 。 |
string RootName |
包含网站根目录的“友好”名称。默认值是 Home |
string RootUrl |
包含网站根目录的 URL。默认值是 / 。 |
string Separator |
用于分隔面包屑 HTML 中“友好”目录名称的 HTML 字符。默认值是 > 。 |
例如,要将分隔符字符更改为 :
,您需要将控件的标签更改为以下内容
<Sagara:BreadCrumbControl id="breadcrumb" Separator=":" runat="Server" />
或者,您可以在编译前在代码隐藏文件中修改这些属性。
待办事项列表
- 根据用户建议,我正在研究将数据绑定整合到此控件的可能性。
结论
就是这样!正如您所见,面包屑导航的概念和实现都非常简单。
如果您有任何疑问,请在下面的消息板上留言,我将尽快回复!
历史
- 1.0.0 - 2003 年 8 月 23 日
首次公开发布。
- 2.0.0 - 2003 年 9 月 23 日
将脚本转换为自定义控件。