首页 > 代码库 > 在ASP.NET MVC 上使用Web.sitemap
在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
2、新建一个类GetMvcSiteMap.cs ,如果用缓存,可以自己加上
3、html 页面调用,<li class="one">@Html.Raw(MVCSiteMap.GetMvcSiteMap("/Manager/AnswerFB/Index") )</li>
4、最终效果
二、步骤
1、新建一个 Web.sitemap 文件,url 包含了Controller+Action
<?xml version="1.0" encoding="utf-8" ?>
<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
{
/// <summary>
///获取siteMap
/// </summary>
/// <param name="CurrentPageUrl">当前页面url,区分大小写,也可以是 Request.Url,但格式要处理好</param>
/// <returns>返回一串html代码,直接读取到html页面就可以了</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=http://www.mamicode.com/‘{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;
}
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。