千家信息网

在MVC下怎么用XML实现breadcrumbs导航栏

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下在MVC下怎么用XML实现breadcrumbs导航栏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!先看下样子像这种导航栏(breadcrumbs)在mvc下我们来
千家信息网最后更新 2026年11月03日在MVC下怎么用XML实现breadcrumbs导航栏

小编给大家分享一下在MVC下怎么用XML实现breadcrumbs导航栏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

先看下样子

像这种导航栏(breadcrumbs)在mvc下我们来实现他。我们采用XML来实现这个功能。

1.首先做个准备,我们编写rounting规则(顺便提一句,我们要用到rounting功能,所以规则必须写正确,不然出不来喔)

代码如下

public static void RegisterRoutes(RouteCollection routes)          {              routes.IgnoreRoute("{resource}.axd/{*pathInfo}");              routes.MapRoute(               "inner",                                              // Route name               "resume/test/inner/{action}/{id}",                           // URL with parameters               new { controller = "inner", action = "Index", id = "" }  // Parameter defaults               );              routes.MapRoute(             "test",                                              // Route name             "resume/test/{action}/{id}",                           // URL with parameters             new { controller = "test", action = "Index", id = "" }  // Parameter defaults             );              routes.MapRoute(                  "Default",                                              // Route name                  "{controller}/{action}/{id}",                           // URL with parameters                  new { controller = "Home", action = "Index", id = "" },                  new { controller = "^(?!(test|inner)).*$", action = "^(?!test).*$" }              );            }

我们加了两个规则

/resume/test

和/resume/test/inner

2.编写用到的XML文件,注意是树形结构的

在models写个Navigator.xml

                                

3.编写我们的类文件来实现Navigator

在models写个navigatorHelper.cs

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using System.Xml;  using System.Xml.Linq;  using System.Web.Routing;  using System.Web.Mvc;  using System.IO;  using System.Text;   namespace conansoft.Helpers  {      public static class MenuHelper      {          private static HttpServerUtilityBase Server = null;
  • private static HttpRequestBase Request = null;

  • private static UrlHelper Url = null;

  • private static RouteValueDictionary RouteDictionary = null;

  • public static string Navigator(this HtmlHelper helper)

  • {

  • Server = helper.ViewContext.RequestContext.HttpContext.Server;

  • Request = helper.ViewContext.RequestContext.HttpContext.Request;

  • Url = new UrlHelper(helper.ViewContext.RequestContext);

  • RouteDictionary = helper.ViewContext.RequestContext.RouteData.Values;

  • string xmlPath = Server.MapPath(Url.Content("~/Models/Navigator.xml"));

  • XDocument doc = XDocument.Load(xmlPath);

  • XElement node = FindNode(doc.Root);

  • StringBuilder sb = new StringBuilder();

  • Stack s = new Stack();

  • while (node != null)

  • {

  • s.Push(node);

  • nodenode = node.Parent;

  • }

  • //输出breadcrumbs.可以自行修改使之符合你的要求

  • while (s.Count() != 0)

  • {

  • node = s.Pop();

  • if (UrlEqual(node))

  • {

  • sb.AppendLine(string.Format("{0}", node.Attribute("Title").Value, node.Attribute("Description").Value));

  • }

  • else

  • {

  • sb.AppendLine(string.Format("{0}", node.Attribute("Title").Value,

  • Url.Action(node.Attribute("Action").Value, node.Attribute("Controller").Value),

  • node.Attribute("Description").Value));

  • sb.AppendLine(" > ");

  • }

  • }

  • return sb.ToString();

  • }

  • ///

  • /// 查找当前节点

  • ///

  • /// 当前节点

  • /// 找到返回,找不到为空

  • private static XElement FindNode(XElement e)

  • {

  • XElement result = e;

  • if (UrlEqual(e))

  • {

  • return e;

  • }

  • else

  • {

  • if (e.HasElements)

  • {

  • foreach (XElement ee in e.Elements())

  • {

  • result = FindNode(ee);

  • }

  • }

  • else

  • {

  • return null;

  • }

  • return result;

  • }

  • }

  • ///

  • /// Url是否相等

  • ///

  • /// 节点

  • private static bool UrlEqual(XElement e)

  • {

  • string url1 = Url.Action(e.Attribute("Action").Value, e.Attribute("Controller").Value).ToLower();

  • string url2 = Url.RouteUrl(RouteDictionary).ToLower();

  • return url1 == url2;

  • }

  • }

  • }

  • 解释一下我们利用xml文件来实现breadcrumbs,并且我们用action和controller来判断是否为当前路径[UrlEqual]

    在网页中加入

    <%=Html.Navigator() %>  <%=Html.Navigator() %>

    好了效果如下

    看完了这篇文章,相信你对"在MVC下怎么用XML实现breadcrumbs导航栏"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

    导航 文件 节点 规则 功能 篇文章 两个 代码 完了 效果 更多 树形 样子 知识 结构 网页 行业 资讯 资讯频道 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 科技创新与互联网经济 互联网金融 科技 紫鲸互联网科技 上海喔噻互联网科技 腾讯科技 互联网女皇 米客互联网科技 广州优美互联网科技 顶级互联网科技成果有哪些 阿里互联网科技公司 湖北码尼互联网科技有限公司电话 千方科技属于互联网企业吗 和信科技工业互联网 洛阳昕诺飞互联网科技有限公司 互联网科技和法律行业 上海钢联属于互联网科技股吗 互联网领先科技宣传片 陕西九四连强互联网科技有限公司 知域互联网科技有限公司官网 互联网科技快速发展优美句子 苏州找大状互联网科技有限公司 互联网和科技技术 致骋互联网科技 广州善班互联网科技 广州慧亚互联网科技怎么样 南平创想时代互联网科技有限公司 互联网科技革命什么开始 21世纪互联网科技成就 西安有哪些互联网高科技企业 科技互联网行业投资研究
    0