项目升级到.net FrameWork 4.5 mvc项目之后,以前.net 2.0的SiteMap站点地图xml文件还能不能用?我们分解了下,是可以用的,只需要先将xml读取到,然后forech遍历下做成泛型数据~给mvc的模型,然后就可以直接在view视图中使用。下面分解代码:

Web.sitemap文件:

<?xml version="1.0" encoding="utf-8" ?>
<siteMapNode action="com/Default.aspx" title="首页"  description="首页" comment="" type="0">
  <siteMapNode action="com/Products.aspx" title="产品"  description="产品" comment="" type="0">
  </siteMapNode>
  <siteMapNode action="com/About.aspx" title="关于我们"  description="关于我们" comment="" type="0"/>
  <siteMapNode action="com/Services.aspx" title="服务"  description="服务" comment="" type="0"/>
  <siteMapNode action="com/Support.aspx" title="帮助支持"  description="帮助支持" comment="" type="0">
  </siteMapNode>
  <siteMapNode action="com/News.aspx" title="新闻"  description="新闻"  comment="" type="0">
    <siteMapNode action="com/Download.aspx" title="下载"  description="下载" comment="" type="0"/>
  </siteMapNode>
  <siteMapNode action="com/Order.aspx" title="订单"  description="订单" comment="" type="0"/>
  <siteMapNode action="com/Search.aspx" title="搜索"  description="搜索"  comment="" type="0"/>
  <siteMapNode action="com/MyWS3.aspx" title="注册信息"  description="注册信息" comment="*" type="0"/>

  <siteMapNode action="com/SiteMap.aspx" title="网站地图" description="网站地图" comment="" type="1"/>
  <siteMapNode action="com/Job.aspx" title="Weisim3工作" description="Weisim3工作" comment="" type="1"/>
  <siteMapNode action="com/Feedback.aspx" title="意见反馈" description="意见反馈" comment="" type="1"/>
  <siteMapNode action="com/WebProject.aspx" title="Web架构" description="Web架构" comment="" type="1"/>
  <siteMapNode action="com/Authorization" title="授权中心" description="授权中心" comment="" type="1"/>
  <siteMapNode action="com/Ad.aspx" title="广告" description="广告" comment="" type="1"/>
</siteMapNode>

这里我们webForm做测试,先读取到站点地图的数据:

 protected void Page_Load(object sender, EventArgs e)
 {
            DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath("~/App_Data/Web.sitemap"));
            if (!Page.IsPostBack)
            {
                GridView1.DataSource = ds;
                GridView1.DataBind();
            }


            foreach (DataRow item in ds.Tables[0].Rows)
            {
                Response.Write(item["action"].ToString() + "<br/>");
            }
 }

只有能遍历到数据,就能封装成泛型数据出来,给MVC的数据模型