在ASP.NET MVC 上使用Web.sitemap

2020-12-13 04:47

阅读:487

标签:web.sitemap   mvc web.sitemap   mvc web.sitemap跨area   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 
siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  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
{
    /// 
    ///siteMap 
    /// 
    ///  url Request.Url,
    /// htmlhtml
    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("{0}", drs[rowIndex]["title"]);
        }
        return url;
    }
    /// 
    /// 
    /// 
    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("{1}>", url, drs[0]["title"]);
                Html = urlLink(dt, drs[0]["siteMapNode_Id_0"].ToString()) + Html;
            }
        }
        return Html;
    }
}
 
3、html 页面调用,
  • @Html.Raw(MVCSiteMap.GetMvcSiteMap("/Manager/AnswerFB/Index") )

  • soscw.com,搜素材 
     4、最终效果
    soscw.com,搜素材 

    在ASP.NET MVC 上使用Web.sitemap,搜素材,soscw.com

    在ASP.NET MVC 上使用Web.sitemap

    标签:web.sitemap   mvc web.sitemap   mvc web.sitemap跨area   mvc web.sitemap跨命名空间   

    原文地址:http://blog.csdn.net/wen542659483/article/details/26040217


    评论


    亲,登录后才可以留言!