65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 中的面包屑导航

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.32/5 (22投票s)

2003年8月23日

CPOL

4分钟阅读

viewsIcon

378226

downloadIcon

6159

本文介绍如何根据网站的目录结构为您的网站创建面包屑导航。

Breadcrumbs without file name appended

不附加文件名面包屑

Breadcrumbs with file name appended

附加文件名面包屑

引言

许多流行的网站会在每页的顶部附近有一个导航菜单,以便用户可以轻松地追溯他们回到网站的路径。菜单通常看起来像这样(请注意,这些链接是无效的)

首页 > 产品 > eWidge

这种导航被称为“面包屑”导航,因为它类似于在森林中徒步时留下痕迹的面包屑,这样你就可以找到出路。

在版本 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 构造函数中名为 labelsHybridDictionary 对象中的目录名称和“友好”名称。您需要更改它们以匹配您网站的目录结构。

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 日

    将脚本转换为自定义控件。

© . All rights reserved.