Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to use XML to realize breadcrumbs Navigation Bar under MVC

2025-02-25 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/02 Report--

Xiaobian to share with you how to use XML to achieve breadcrumbs navigation bar under MVC, I hope you have gained something after reading this article, let's discuss it together!

Let's take a look.

像这种导航栏(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]

在网页中加入

.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }

好了效果如下

After reading this article, I believe you have a certain understanding of "how to use XML to implement the breadcrumbs navigation bar under MVC". If you want to know more about it, welcome to pay attention to the industry information channel. Thank you for reading!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report