`
luhai1992
  • 浏览: 56851 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

AspNet站点地图小结

阅读更多

AspNet站点地图小结

一、配置项目的站点地图路径

a)         通过修改站点地图的提供程序实现

Web.config

<system.web> 节点下

    <siteMap defaultProvider="CRMSiteMapProvider"> //代表默认提供程序

         <providers >

        <add name="CRMSiteMapProvider" type="System.Web.XmlSiteMapProvider"  siteMapFile="~/Web.sitemap"/>

        <add name="SystemSiteMapProvider"  type="System.Web.XmlSiteMapProvider"  siteMapFile="~/Manager/Web.sitemap"/>

解析:

           Name: 提供程序名

           Type: 提供程序类型 System.Web.XmlSiteMapProvider

           siteMapFile站点地图路径

      </providers>

 </siteMap>

b)         绑定不同的站点地图只需将数据源的SiteMapProvider 属性设置为对应配置的提供程序名称即可

二、站点地图的权限设置

1.       配置站点地图的权限

<siteMapNode url="" roles="总经理" title="UserAddddddddd" description=""></siteMapNode>

若有多个角色可以用 ,  号隔开。

2.       配置站点地图的提供程序

           <siteMap defaultProvider="CRMWebSiteMap" enabled="true">

                 <providers>

                      <add name="CRMWebSiteMap"

                 type="System.Web.XmlSiteMapProvider"

                 siteMapFile="~/Web.sitemap"

                 securityTrimmingEnabled="true"/>

                 </providers>

           </siteMap>

 注意: 要将securityTrimmingEnabled="true"设置为true

对于空URL节点起作用,其余节点不起作用

三、动态生成站点地图

a)         通过后台生成站点地图

1.       编写后台类(BLL DAL 等)

2.       在页面中加载导航内容

   protected void Page_Load(object sender, EventArgs e)

    {

        bindTree(0,null);

    }

    private void bindTree(int parentid,TreeNode node)

    {

        BLL.BLLSiteMap b = new BLL.BLLSiteMap();

        List<Models.SiteMap> siteMapList=b.getSiteMap(parentid);

        foreach (Models.SiteMap siteMap in siteMapList)

        {

            TreeNode t = new TreeNode();

            t.NavigateUrl = siteMap.Url;

            t.Text = siteMap.Title;

            t.Value = siteMap.Title;

            bindTree(siteMap.Id,t);

            if (node != null)

            {

                node.ChildNodes.Add(t);

            }

            else {

                this.TreeView1.Nodes.Add(t);

            }

        }

    }

b)         通过重写站点地图提供程序实现

1.    web.config 文件中加入sitemap提供程序

<add name="SqlSiteMapProvider" type="SqlSiteMapProvider" connectionStringName="ConStr"/>

Type 对应后台实现其功能的类

2.   AppCode文件夹下写对应的实现类

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Configuration.Provider;

using System.Configuration;

using System.Collections.Generic;

using System.Web.Configuration;

using BLL;

using System.Collections.Specialized;

/// <summary>

/// CRMProvider 的摘要说明

/// </summary>

public class CRMProvider:StaticSiteMapProvider

{

    public SiteMapNode root;

    public string key;

    private readonly object obj = new object();

    public CRMProvider()

    {

}

//重写其Initialize 方法注意重写的方法参数

//可以通过转到定义查看此方法

    public override void Initialize(string name, NameValueCollection attributes)

    {

        base.Initialize(name, attributes);

        if (attributes == null)

        {

            throw new ArgumentNullException();

        }

 

        if (string.IsNullOrEmpty(name))

        {

            name = "SqlSiteMapProvider";

        }

 

        key = name;

 

        if (!attributes.HasKeys() || attributes["connectionStringName"] == null)

        {

            throw new ProviderException();

        }

 

        //获得连接字符串的名称

        string connectionStringName = attributes["connectionStringName"].ToString();

        if (string.IsNullOrEmpty(connectionStringName))

        {

            throw new ProviderException();

        }

 

        if (string.IsNullOrEmpty(WebConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))

        {

            throw new ProviderException();

        }

}

//继承StaticSiteMapProvider类需实现其方法

    public override SiteMapNode BuildSiteMap()

    {

        SiteMapNode rootnode = new SiteMapNode(this,"root");

        lock(obj){

            if(root !=null){

                return root;

            }

            rootnode.Title = "CRMaa";

            rootnode.Url = "sss";

            rootnode.Description = "CRM系统";

            AddNode(rootnode,null);

            root = rootnode;

            GetSiteMapNode(0, RootNode);

        }

        return rootnode;

    }

 

    protected override SiteMapNode GetRootNodeCore()

    {

        lock(obj){

            root = BuildSiteMap();

//注意SiteMapNode创建时需保证线程安全

//将其锁定

        }

        return root;

    }

 

 

    private void GetSiteMapNode(int parentid, SiteMapNode parentNode)

    {

        BLL.BLLSiteMap b = new BLLSiteMap();

        List<Models.SiteMap> list = b.getSiteMap(parentid);

        foreach (Models.SiteMap siteMap in list)

        {

            SiteMapNode node = new SiteMapNode(this, siteMap.Id.ToString());

            node.Url = siteMap.Url;

            node.Title = siteMap.Title;

            node.Description = siteMap.Description;

            AddNode(node, parentNode);

            GetSiteMapNode(siteMap.Id, node);

          

        }

    }

}

 

分享到:
评论

相关推荐

    ASPnet20站点地图搭建网站导航结构.chm

    如果你曾经到过陌生的目的地旅行过,那么你一定知道地图的重要性—它们能够帮助使你的旅行更舒适些。这个道理对于网站来说是同样的。...本文将解释什么是站点地图并且描述如何开发使用它们的网站导航结构。

    aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤

    aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤aspnet的执行步骤

    ASPNET美妆微信小程序官网源码

    美妆微信小程序官网,后台管理更新微信小程序上数据信息,测试无Bug1、 后台内容管理:管理网站的pc和wap端的产品、文章、单页等管理、有多状态设置、附件上传、多图上传管理、拓展字段信息编辑等 2、 后台会员系统...

    Aspnet Mvc教程 5. 基本工作流程

    Aspnet Mvc教程 1.说明 01:06 Aspnet Mvc教程 2.准备工作 02:37 Aspnet Mvc教程 3. 建立并运行 02:46 Aspnet Mvc教程 4.默认程序结构 04:18 Aspnet Mvc教程 5. 基本工作流程 05:13 Aspnet Mvc教程 6.mvc理论讲解...

    ASPNET网站建设CMS系统源码

    采用AJAX操作智能提示,多语言,WBE2.0多标签显示页面,可以同时打开多个窗口模式方便操作手机网站:内容管理,栏目管理网站管理:内容管理网站目录无限极分类单页面外链节草稿箱页面显示字段定义颜色标题栏目管理:...

    ASPNET学习网站源码

    用.NET技术开发的伪静态学习网站,网站首页实现了不同版块信息,新闻中心,图片轮播浏览, 最新的视频信息,资料下载,及在线答疑; 后台管理:用户管理,用户组管理,类型管理,文章管理,文件管理,视频管理,...

    aspnet生命周期 介绍

    aspnet生命周期 aspnet生命周期 aspnet生命周期 aspnet生命周期

    aspnet

    自己写的ASP.NET2.0例子,主,子,叶三重数据表资料编辑,并使用了ATLAS

    ASPNET实例项目大全

    ASPNET实例项目大全 ASPNET实例项目大全

    ASPNET论坛ASPNET论坛

    ASPNET论坛ASPNET论坛ASPNET论坛ASPNET论坛ASPNET论坛ASPNET论坛

    微软ASPNET站点部署指南-汤姆大叔

    微软ASPNET站点部署指南

    aspnet运行环境.

    aspnet运行环境.aspnet运行环境.aspnet运行环境.

    Aspnet-aspnet-bootstrap-4.zip

    Aspnet-aspnet-bootstrap-4.zip,aspnet/templates输出[正在]重写为bs4 finalheads up:ms完成了!您需要基于2.1/2.2 dotnet sdk的模板您不再需要此模板,asp.net是一个开源的web框架,用于使用.net构建现代web应用和...

    ASPNET的网站新闻管理系统设计与实现

    ASPNET的网站新闻管理系统设计与实现ASPNET的网站新闻管理系统设计与实现

    ASPNET商业购物网站源码

    本源码是一个商业购物网站源码,分为前台页面和后台管理,欢迎下载 三、菜单功能 前台页面 1、首页;所以宝贝;男装专区;女装专区;外套;T恤;衬衫;针织;牛仔;休闲 2、动态图片展示 3、关于我们;联系我们...

    JSP ASPNET CSS HTML

    JSP ASPNET CSS HTML 经典网站源代码

    Aspnet-aspnet-app.zip

    Aspnet-aspnet-app.zip,一个asp.net appaspnet应用程序,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript的网站,这些网站简单、快速,可以扩展到数百万用户...

    Aspnet-aspnet-api-versioning.zip

    Aspnet-aspnet-api-versioning.zip,提供一组库,这些库将服务API版本控制添加到ASP.NET Web API、具有ASP.NET Web API的OData和ASP.NET Core.ASP.NET API版本控制,asp.net是一个开源的web框架,用于使用.net构建现代...

    AspNet动态网站开发教程(书)

    ASP.NET是Microsoft公司推出的用于编写动态网页的一项新技术,是Microsoft公司的动态服务器页面...既可以作为大专院校计算机专业师生的教材或者参考书,也可供动态网站开发人员及对ASP.NET技术感兴趣的技术人员学习参考

    Aspnet-aspnet-core-identity.zip

    Aspnet-aspnet-core-identity.zip,ASP.NET核心标识系列ASP.NET核心标识系列,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript的网站,这些网站简单、快速,...

Global site tag (gtag.js) - Google Analytics