在ASP.NET MVC 上使用Web.sitemap

一、用ASP.NET WebForm开发的同学我想都用过Web.sitemap服务器控件吧,这个插件给我们带来了倍儿爽的感觉,大大提高了开发效率,对日后的维护也是大大的好。可是到了ASP.NET MVC,这个插件好像不怎么管用了。于是网上有一个非常好用的 mvc sitemap 插件  mvcsitemapprovider ,不过今天小生也写了一个自己的案例,mvc  Web.sitemap 跨Areas,mvc  Web.sitemap 跨命名空间,仅供学习,大牛勿喷,小弟也是刚入门!代码如下:
二、步骤
1、新建一个  
Web.sitemap 文件,url  包含了Controller+Action  
<?xml version="1.0" encoding="utf-8" ?>
   < siteMapNode  title = ""  url = "/Home/Index" >
     < siteMapNode  title = ""  url = ""  >   
       < siteMapNode  title = ""  url = "/infoquery/myinfo/Index"  />
       < siteMapNode  title = ""  url = "/InfoQuery/Contract/Index"  />
     </ siteMapNode >
     < siteMapNode  title = ""  url = "" >
       < siteMapNode  title = ""  url = "/Manager/Users/Index" />
       < siteMapNode  title = ""  url = "/Manager/Excels/Index" />
       < siteMapNode  title = "1"  url = "/Manager/AnswerFB/Index" >
       < siteMapNode  title = "2"  url = "/Manager/AnswerFB/Index" >
         < siteMapNode  title = ""  url = "/Manager/AnswerFB/AnswerFBBack" />
       </ siteMapNode >
       </ siteMapNode >
     </ siteMapNode >
   </ siteMapNode >
</ siteMap >
 

2、新建一个类
GetMvcSiteMap.cs  ,如果用缓存,可以自己加上
 
using  System ;
using  System . Collections . Generic ;
using  System . Linq ;
using  System . Web ;
using  System . Data ;
public  class  MVCSiteMap
{
     /// <summary>
     ///siteMap 
     /// </summary>
     /// <param name="CurrentPageUrl">url Request.Url,</param>
     /// <returns>htmlhtml</returns>
     public  static  string  GetMvcSiteMap ( string  CurrentPageUrl )
     {
         DataSet  ds  =  new  DataSet ( ) ;
         ds . ReadXml ( HttpContext . Current . Server . MapPath ( " ~/Web.sitemap " )) ; //xml
         DataRow [ ]  drs  =  ds . Tables [ 0 ] . Select ( " url=' "  +  CurrentPageUrl  +  " ' " ) ; //url
         int  rowIndex  =  drs . Count ( ) ; //url,所以
         string  url  =  " " ;
         if  ( rowIndex  >  0 )
         {
              rowIndex  =  rowIndex  -  1 ;
              url  =  urlLink ( ds . Tables [ 0 ] ,  drs [ rowIndex ] [ " siteMapNode_Id_0 " ] . ToString ( ))  +  string . Format ( " <a>{0}</a> " ,  drs [ rowIndex ] [ " title " ]) ;
         }
         return  url ;
     }
     /// <summary>
     /// 
     /// </summary>
     private  static  string  urlLink ( DataTable  dt ,  string  parentid )
     {
         string  Html  =  " " ;
         if  ( ! string . IsNullOrEmpty ( parentid ))
         {
              DataRow [ ]  drs  =  dt . Select ( " siteMapNode_Id= "  +  parentid ) ;
              if  ( drs . Count ( )  >  0 )
              {
                   string  url  =  drs [ 0 ] [ " url " ] . ToString ( ) ;
                   if  ( ! string . IsNullOrEmpty ( url ))
                   {
                        url  =  string . Format ( " href='{0}' " ,  url ) ;
                   }
                   Html  =  string . Format ( " <a {0}>{1}</a>> " ,  url ,  drs [ 0 ] [ " title " ]) ;
                   Html  =  urlLink ( dt ,  drs [ 0 ] [ " siteMapNode_Id_0 " ] . ToString ( ))  +  Html ;
              }
         }
         return  Html ;
     }
}
 
3、html 页面调用,<li class="one">@Html.Raw(MVCSiteMap.GetMvcSiteMap("/Manager/AnswerFB/Index") )</li>
图片 
 4、最终效果
图片 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值