新聞中心
先看下樣子

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)靈武免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
像這種導(dǎo)航欄(breadcrumbs)在mvc下我們來實(shí)現(xiàn)他。我們采用XML來實(shí)現(xiàn)這個(gè)功能。
1.首先做個(gè)準(zhǔn)備,我們編寫rounting規(guī)則(順便提一句,我們要用到rounting功能,所以規(guī)則必須寫正確,不然出不來喔)
代碼如下
- 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).*$" }
- );
- }
我們加了兩個(gè)規(guī)則
/resume/test
和/resume/test/inner
2.編寫用到的XML文件,注意是樹形結(jié)構(gòu)的
在models寫個(gè)Navigator.xml
- version="1.0" encoding="utf-8" ?>
Title="首頁" Description="潘峰的網(wǎng)站" Action="Index" Controller="Home"> Title="簡歷" Description="在線簡歷" Action="Index" Controller="Resume"> Title="Test" Description="Test" Action="Index" Controller="test"> Title="inner" Description="inner" Action="Index" Controller="inner">
3.編寫我們的類文件來實(shí)現(xiàn)Navigator
在models寫個(gè)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();
- }
- ///
- /// 查找當(dāng)前節(jié)點(diǎn)
- ///
- /// 當(dāng)前節(jié)點(diǎn)
- /// 找到返回,找不到為空
- 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是否相等
- ///
- /// 節(jié)點(diǎn)
- 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文件來實(shí)現(xiàn)breadcrumbs,并且我們用action和controller來判斷是否為當(dāng)前路徑[UrlEqual]
在網(wǎng)頁中加入
- <%=Html.Navigator() %>
<%=Html.Navigator() %>
好了效果如下
我的網(wǎng)站
[[3800]]
當(dāng)前題目:在MVC下用XML實(shí)現(xiàn)breadcrumbs導(dǎo)航欄
路徑分享:http://m.fisionsoft.com.cn/article/djphipp.html


咨詢
建站咨詢
