小編給大家分享一下在MVC下怎么用XML實現(xiàn)breadcrumbs導航欄,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)十堰鄖陽免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
先看下樣子
像這種導航欄(breadcrumbs)在mvc下我們來實現(xiàn)他。我們采用XML來實現(xiàn)這個功能。
1.首先做個準備,我們編寫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).*$" } ); }
我們加了兩個規(guī)則
/resume/test
和/resume/test/inner
2.編寫用到的XML文件,注意是樹形結(jié)構(gòu)的
在models寫個Navigator.xml
<?<?xml version="1.0" encoding="utf-8" ?> <node Title="首頁" Description="潘峰的網(wǎng)站" Action="Index" Controller="Home"> <node Title="簡歷" Description="在線簡歷" Action="Index" Controller="Resume"> <node Title="Test" Description="Test" Action="Index" Controller="test"> <node Title="inner" Description="inner" Action="Index" Controller="inner"> </node> </node> </node> </node>
在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();
}
///
/// 查找當前節(jié)點
///
/// 當前節(jié)點
/// 找到返回,找不到為空
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é)點
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文件來實現(xiàn)breadcrumbs,并且我們用action和controller來判斷是否為當前路徑[UrlEqual]
在網(wǎng)頁中加入
<%=Html.Navigator() %> <%=Html.Navigator() %>
好了效果如下
看完了這篇文章,相信你對“在MVC下怎么用XML實現(xiàn)breadcrumbs導航欄”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
當前題目:在MVC下怎么用XML實現(xiàn)breadcrumbs導航欄
網(wǎng)站路徑:http://aaarwkj.com/article34/ggpgse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司、企業(yè)建站、商城網(wǎng)站、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)