一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET站點導航應用詳解

ASP.NET站點導航應用詳解

2019-12-23 13:27lijiao ASP.NET教程

這篇文章主要內容是ASP.NET站點導航,主要包括站點導航以及動態修改內存中的站點地圖,感興趣的小伙伴們可以參考一下

 導航實際上給訪問者提供了一個地圖類似的東西,讓訪問者更快地找到想要的東西。

在2.0中引入了一個很重要的概念,那就是站點地圖siteMap這樣一個XML文件,但是它后綴不是XML。

若要為站點創建一致的、容易管理的導航解決方案,可以使用asp.net站點導航。asp.net站點導航提供下列功能:

ASP.NET站點導航應用詳解

ASP.NET站點導航應用詳解

ASP.NET站點導航應用詳解

 

在了解了一些基本知識后,我們來做一個簡單的導航的例子。

1、首先創建一個master

html代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<%@ 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>

 顯示的效果:

ASP.NET站點導航應用詳解

 

2、建立如下導航結構(統一應用上面的master)

ASP.NET站點導航應用詳解

3、添加站點地圖(名稱不可以改)

Web.sitemap下的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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>

4、在根目錄下a.aspx,放一個treeView控件。新建數據源為我們建立的站點地圖。

運行后,我們便可以看到效果如圖所示:

ASP.NET站點導航應用詳解

接下來會講動態修改內存中的站點地圖,什么叫動態修改內存中的站點地圖,到底是什么意思呢?

例如文章列表中通常都有多篇,我們總不能把這些都放到站點地圖中去,何況文章ID、欄目編號、商品分類或者商品ID也不是我們事先能夠預料到的,那么站點地圖里沒有,外面就不能顯示,該怎么辦呢?這就需要用到動態修改內存中的站點地圖了。
如上面提出的問題,我們假設有一個文章管理系統結構如下:
首頁-新聞-國際新聞(列表)
那么可以假設國際新聞這一級的頁面是list.aspx,不同的欄目會有不同的ID,那么地址結構就假設如下:
xxx.com--~/news/--list.aspx?id=3&page=12
這樣一個結構,我們對新聞列表頁的處理就可以只在站點地圖中靜態地寫上url="~/news/list.aspx"。那么如果在別人瀏覽時呈現出上面的結構呢,我們接下來處理。
Web.sitemap:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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>

主要就是用到title為動態修改內存中的這一句來演示。
然后在演示頁面sitemap.aspx中放一個SitemapPath控件,注意設置它的renderCurrentNodeAsLink為true(指示當前結點為鏈接)
頁面的后臺代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 + "?page=" + page.ToString();
   }
   return TempNode;
  }
  //隨便設置一個數。
  private int nid()
  {
   return 3;
  }
  private int npage()
  {
   return 12;
  }
 }
}

解釋:上面的nid()和npage(),是用來獲取參數的兩個方法,實際中根據實際情況而定。
運行,我們看看這個鏈接的屬性:

ASP.NET站點導航應用詳解

到此,我們就很簡單的實現了動態修改內存中的站點地圖了!
站點導航,是我們在BS開發中非常常用的,所以我們還是很有必要深刻掌握的,接下來還會發相關的文章,與大家一討論學習!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产美女AV久久久久 | 美女和男人免费网站视频 | 亚洲精品私拍国产福利在线 | 成年人视频在线免费看 | 女同性互吃奶乳免费视频 | 久草在线福利视频在线播放 | 免费看欧美一级特黄a大片一 | 经典欧美gifxxoo动态图暗网 | 亚飞与亚基国语1080p在线观看 | 欧洲vodafonewifi日本 | 国产精品二区高清在线 | 大好硬好深好爽想要视频 | 婷婷激情综合五月天 | 麻豆亚洲一区 | 狠狠色综合久久久久尤物 | 成年人免费看的视频 | 搓光美女衣| 18young第一次| jk制服白丝超短裙流白浆 | 国产一区二区在线看 | 国产美女久久久久 | 日本免费一区二区三区四区五六区 | 欧美日韩专区国产精品 | 天天操夜夜操狠狠操 | 美女脱了内裤张开腿亲吻男生 | 极品主播的慰在线播放 | 熟睡中的麻麻大白屁股小说 | 操动漫美女视频 | 欧美精品99久久久久久人 | 精品一区二区三区高清免费不卡 | 亚洲精品久久久WWW游戏好玩 | babes性欧美30| 四虎在线免费 | 国内外精品免费视频 | 成年美女黄网色大观看全 | 波多野结衣中文字幕乱七八糟 | 情趣内衣情趣玩具play | 99精品国产在现线免费 | 99久久精品99999久久 | 久久九九精品国产自在现线拍 | 精品亚洲午夜久久久久 |