• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET站点导航应用详解

ASP.NET站点导航应用详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net,c#和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 导航实际上给访问者提供了一个地图类似的东西,让访问者更快地找到想要的东西。

在2.0中引入了一个很重要的概念,那就是站点地图siteMap这样一个XML文件,但是它后缀不是XML。

若要为站点创建一致的、容易管理的导航解决方案,可以使用asp.net站点导航。asp.net站点导航提供下列功能:





在了解了一些基本知识后,我们来做一个简单的导航的例子。

1、首先创建一个master

html代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="mp.master.cs" Inherits="Navigation.mp" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
 <title></title> 
 <asp:ContentPlaceHolder ID="head" runat="server"> 
 </asp:ContentPlaceHolder> 
</head> 
<body> 
 <form id="form1" runat="server"> 
 <div> 
  <table style="width: 656px; height: 255px"> 
   <tr> 
    <td style="width: 500px; background-color: #99ccff"> 
      您当前的位置在: 
      
     <asp:SiteMapPath ID="SiteMapPath1" runat="server" Font-Names="Verdana" 
      Font-Size="0.8em" PathSeparator=" : "> 
      <CurrentNodeStyle ForeColor="#333333" /> 
      <NodeStyle Font-Bold="True" ForeColor="#990000" /> 
      <PathSeparatorStyle Font-Bold="True" ForeColor="#990000" /> 
      <RootNodeStyle Font-Bold="True" ForeColor="#FF8000" /> 
     </asp:SiteMapPath> 
    </td> 
   </tr> 
   <tr> 
    <td style="width: 500px"> 
     <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
     </asp:ContentPlaceHolder> 
    </td> 
   </tr> 
   <tr> 
    <td style="width: 500px; background-color: #ebebff"> 
     版权所有 。。。。。。。</td> 
   </tr> 
  </table> 
 </div> 
 </form> 
</body> 
</html> 
</div>

 显示的效果:

2、建立如下导航结构(统一应用上面的master)

3、添加站点地图(名称不可以改)

Web.sitemap下的代码如下:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
 <siteMapNode url="a.aspx" title="首页" description="1"> 
  <siteMapNode url="b.aspx" title="根目录B页" description="2" /> 
  <siteMapNode url="Default.aspx" title="Default页" description="3" /> 
  <siteMapNode url="" title="one目录" description="4"> 
  <siteMapNode url="~/one/a.aspx" title="one目录下的a" description="5"/> 
  <siteMapNode url="~/one/b.aspx" title="one目录下的b" description="6"/> 
  <siteMapNode url="" title="one目录下的once目录" description="7"> 
   <siteMapNode url="~/one/once/a.aspx" title="one目录下的once目录下的a" description="8"/> 
   <siteMapNode url="~/one/once/b.aspx" title="one目录下的once目录下的b" description="9"/> 
  </siteMapNode> 
  </siteMapNode> 
  <siteMapNode url="" title="two目录" description="10"> 
  <siteMapNode url="~/two/a.aspx" title="two目录下的a" description="11"/> 
  <siteMapNode url="~/two/b.aspx" title="two目录下的b" description="12"/> 
  </siteMapNode> 
 
  <siteMapNode url="sitemap.aspx" title="动态修改内存中" description="动态修改内存中的站点地图"/> 
 </siteMapNode> 
</siteMap> 
</div>

4、在根目录下a.aspx,放一个treeView控件。新建数据源为我们建立的站点地图。

运行后,我们便可以看到效果如图所示:

接下来会讲动态修改内存中的站点地图,什么叫动态修改内存中的站点地图,到底是什么意思呢?

例如文章列表中通常都有多篇,我们总不能把这些都放到站点地图中去,何况文章ID、栏目编号、商品分类或者商品ID也不是我们事先能够预料到的,那么站点地图里没有,外面就不能显示,该怎么办呢?这就需要用到动态修改内存中的站点地图了。
如上面提出的问题,我们假设有一个文章管理系统结构如下:
首页-新闻-国际新闻(列表)
那么可以假设国际新闻这一级的页面是list.aspx,不同的栏目会有不同的ID,那么地址结构就假设如下:
xxx.com--~/news/--list.aspx?id=3&page=12
这样一个结构,我们对新闻列表页的处理就可以只在站点地图中静态地写上url="~/news/list.aspx"。那么如果在别人浏览时呈现出上面的结构呢,我们接下来处理。
Web.sitemap:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
 <siteMapNode url="a.aspx" title="首页" description="1"> 
  <siteMapNode url="b.aspx" title="根目录B页" description="2" /> 
  <siteMapNode url="Default.aspx" title="Default页" description="3" /> 
  <siteMapNode url="" title="one目录" description="4"> 
  <siteMapNode url="~/one/a.aspx" title="one目录下的a" description="5"/> 
  <siteMapNode url="~/one/b.aspx" title="one目录下的b" description="6"/> 
  <siteMapNode url="" title="one目录下的once目录" description="7"> 
   <siteMapNode url="~/one/once/a.aspx" title="one目录下的once目录下的a" description="8"/> 
   <siteMapNode url="~/one/once/b.aspx" title="one目录下的once目录下的b" description="9"/> 
  </siteMapNode> 
  </siteMapNode> 
  <siteMapNode url="" title="two目录" description="10"> 
  <siteMapNode url="~/two/a.aspx" title="two目录下的a" description="11"/> 
  <siteMapNode url="~/two/b.aspx" title="two目录下的b" description="12"/> 
  </siteMapNode> 
 
  <siteMapNode url="sitemap.aspx" title="动态修改内存中" description="动态修改内存中的站点地图"/> 
 </siteMapNode> 
</siteMap> 
</div>

主要就是用到title为动态修改内存中的这一句来演示。
然后在演示页面sitemap.aspx中放一个SitemapPath控件,注意设置它的renderCurrentNodeAsLink为true(指示当前结点为链接)
页面的后台代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
 
namespace Navigation 
{ 
 public partial class sitemap : System.Web.UI.Page 
 { 
  protected void Page_Load(object sender, EventArgs e) 
  { 
   //首先我们在这里注册一个事件,也就是说在访问CurrentNode属性的时候触发这个事件 
   SiteMap.SiteMapResolve+=new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); 
  } 
  SiteMapNode SiteMap_SiteMapResolve(object sender,SiteMapResolveEventArgs e) 
  { 
   //我们自定义的处理方法 获取并创建当前节点的副本,并同时复制他的上级节点 
   SiteMapNode CurrentNode = SiteMap.CurrentNode.Clone(true); 
 
   SiteMapNode TempNode = CurrentNode; 
 
   int id = nid(); 
   int page = npage(); 
 
   //从下面方法中得到变量 
   if (id>0) 
   { 
    TempNode.Url = TempNode.Url + "?id=" + id.ToString(); 
   } 
   if (id>0 && page>=0) 
   { 
    TempNode.Url = TempNode.Url + "&page=" + page.ToString(); 
   } 
   else if (page>0) 
   { 
    TempNode.Url = TempNode.Url



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.net SignalR 应用并实现群聊功能 开源代码
  • asp.net动态更新
  • asp.net利用母版制作页脚效果
  • Asp.Net服务器发送HTTP标头后无法设置内容类型的问题解决
  • 使用asp.net mvc,boostrap及knockout.js开发微信自定义菜单编辑工具(推荐)
  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET Core发送邮件的方法
  • 在ASP.NET Core 中发送邮件的实现方法(必看篇)
  • ASP.NET MVC从视图传参到控制器的几种形式
  • Asp.net core WebApi 使用Swagger生成帮助页实例

相关文章

  • 2017-05-11从ASP.NET得到Microsoft Word文档的代码
  • 2017-05-11.NET 单点登录解决方案
  • 2017-05-11有关于JSON的一些资料
  • 2017-05-11asp.net实现C#绘制太极图的方法
  • 2017-05-11Asp.net 页面导航的几种方法与比较 分享
  • 2017-05-11.net/c# memcached缓存获取所有缓存键的方法步骤
  • 2017-05-11基于SignalR的消息推送与二维码扫描登录实现代码
  • 2017-05-11ASP.net中实现基于UrlRewrite的防盗链功能
  • 2017-05-11asp.net简单生成XML文件的方法
  • 2017-05-11asp.net利用cookie保存用户密码实现自动登录的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 编写的vs2005水晶报表程序在vs2008下正常使用的一些实现方法
    • MVC文件上传支持批量上传拖拽及预览文件内容校验功能
    • ASP.NET Session会导致的性能问题
    • asp.net基于JWT的web api身份验证及跨域调用实践
    • WPF实现转圈进度条效果
    • 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问
    • 浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能
    • sql事务应用积累
    • Equals和==的区别 公共变量和属性的区别小结
    • JavaScript用JQuery呼叫Server端方法实现代码与参考语法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有