主頁(yè) > 知識(shí)庫(kù) > ASP.NET站點(diǎn)導(dǎo)航應(yīng)用詳解

ASP.NET站點(diǎn)導(dǎo)航應(yīng)用詳解

熱門(mén)標(biāo)簽:硅谷的囚徒呼叫中心 阿里云 地方門(mén)戶(hù)網(wǎng)站 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 服務(wù)器配置 集中運(yùn)營(yíng)管理辦法 百度競(jìng)價(jià)排名 網(wǎng)站排名優(yōu)化

 導(dǎo)航實(shí)際上給訪問(wèn)者提供了一個(gè)地圖類(lèi)似的東西,讓訪問(wèn)者更快地找到想要的東西。

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

若要為站點(diǎn)創(chuàng)建一致的、容易管理的導(dǎo)航解決方案,可以使用asp.net站點(diǎn)導(dǎo)航。asp.net站點(diǎn)導(dǎo)航提供下列功能:





在了解了一些基本知識(shí)后,我們來(lái)做一個(gè)簡(jiǎn)單的導(dǎo)航的例子。

1、首先創(chuàng)建一個(gè)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"> 
      您當(dāng)前的位置在: 
      
     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"> 
     版權(quán)所有 。。。。。。。/td> 
   /tr> 
  /table> 
 /div> 
 /form> 
/body> 
/html> 

 顯示的效果:

2、建立如下導(dǎo)航結(jié)構(gòu)(統(tǒng)一應(yīng)用上面的master)

3、添加站點(diǎn)地圖(名稱(chēng)不可以改)

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="首頁(yè)" description="1"> 
  siteMapNode url="b.aspx" title="根目錄B頁(yè)" description="2" /> 
  siteMapNode url="Default.aspx" title="Default頁(yè)" 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="動(dòng)態(tài)修改內(nèi)存中" description="動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖"/> 
 /siteMapNode> 
/siteMap> 

4、在根目錄下a.aspx,放一個(gè)treeView控件。新建數(shù)據(jù)源為我們建立的站點(diǎn)地圖。

運(yùn)行后,我們便可以看到效果如圖所示:

接下來(lái)會(huì)講動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖,什么叫動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖,到底是什么意思呢?

例如文章列表中通常都有多篇,我們總不能把這些都放到站點(diǎn)地圖中去,何況文章ID、欄目編號(hào)、商品分類(lèi)或者商品ID也不是我們事先能夠預(yù)料到的,那么站點(diǎn)地圖里沒(méi)有,外面就不能顯示,該怎么辦呢?這就需要用到動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖了。
如上面提出的問(wèn)題,我們假設(shè)有一個(gè)文章管理系統(tǒng)結(jié)構(gòu)如下:
首頁(yè)-新聞-國(guó)際新聞(列表)
那么可以假設(shè)國(guó)際新聞這一級(jí)的頁(yè)面是list.aspx,不同的欄目會(huì)有不同的ID,那么地址結(jié)構(gòu)就假設(shè)如下:
xxx.com--~/news/--list.aspx?id=3page=12
這樣一個(gè)結(jié)構(gòu),我們對(duì)新聞列表頁(yè)的處理就可以只在站點(diǎn)地圖中靜態(tài)地寫(xiě)上url="~/news/list.aspx"。那么如果在別人瀏覽時(shí)呈現(xiàn)出上面的結(jié)構(gòu)呢,我們接下來(lái)處理。
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="首頁(yè)" description="1"> 
  siteMapNode url="b.aspx" title="根目錄B頁(yè)" description="2" /> 
  siteMapNode url="Default.aspx" title="Default頁(yè)" 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="動(dòng)態(tài)修改內(nèi)存中" description="動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖"/> 
 /siteMapNode> 
/siteMap> 

主要就是用到title為動(dòng)態(tài)修改內(nèi)存中的這一句來(lái)演示。
然后在演示頁(yè)面sitemap.aspx中放一個(gè)SitemapPath控件,注意設(shè)置它的renderCurrentNodeAsLink為true(指示當(dāng)前結(jié)點(diǎn)為鏈接)
頁(yè)面的后臺(tái)代碼:

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) 
  { 
   //首先我們?cè)谶@里注冊(cè)一個(gè)事件,也就是說(shuō)在訪問(wèn)CurrentNode屬性的時(shí)候觸發(fā)這個(gè)事件 
   SiteMap.SiteMapResolve+=new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); 
  } 
  SiteMapNode SiteMap_SiteMapResolve(object sender,SiteMapResolveEventArgs e) 
  { 
   //我們自定義的處理方法 獲取并創(chuàng)建當(dāng)前節(jié)點(diǎn)的副本,并同時(shí)復(fù)制他的上級(jí)節(jié)點(diǎn) 
   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; 
  } 
  //隨便設(shè)置一個(gè)數(shù)。 
  private int nid() 
  { 
   return 3; 
  } 
  private int npage() 
  { 
   return 12; 
  } 
 } 
} 

解釋?zhuān)荷厦娴膎id()和npage(),是用來(lái)獲取參數(shù)的兩個(gè)方法,實(shí)際中根據(jù)實(shí)際情況而定。
運(yùn)行,我們看看這個(gè)鏈接的屬性:

到此,我們就很簡(jiǎn)單的實(shí)現(xiàn)了動(dòng)態(tài)修改內(nèi)存中的站點(diǎn)地圖了!
站點(diǎn)導(dǎo)航,是我們?cè)贐S開(kāi)發(fā)中非常常用的,所以我們還是很有必要深刻掌握的,接下來(lái)還會(huì)發(fā)相關(guān)的文章,與大家一討論學(xué)習(xí)!

您可能感興趣的文章:
  • Asp.net給站點(diǎn)某目錄增加Aspnet用戶(hù)
  • Asp.net中處理一個(gè)站點(diǎn)不同Web應(yīng)用共享Session的問(wèn)題
  • 充分利用ASP.NET的三種緩存提高站點(diǎn)性能的注意方法
  • asp.net Web站點(diǎn)風(fēng)格切換的實(shí)現(xiàn)
  • asp.net 站點(diǎn)URLRewrite使用小記
  • asp.net 支持多語(yǔ)言站點(diǎn)的實(shí)現(xiàn)方法
  • 導(dǎo)致Asp.Net站點(diǎn)重啟10個(gè)原因小結(jié)分析
  • ASP.NET 站點(diǎn)地圖(sitemap)簡(jiǎn)明教程
  • 分享下頁(yè)面關(guān)鍵字抓取www.icbase.com站點(diǎn)代碼(帶asp.net參數(shù)的)
  • 設(shè)置ASP.NET頁(yè)面的運(yùn)行超時(shí)時(shí)間詳細(xì)到單個(gè)頁(yè)面及站點(diǎn)
  • 如何建立ASP.NET站點(diǎn)

標(biāo)簽:甘孜 廣西 威海 烏蘭察布 開(kāi)封 西雙版納 梧州 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET站點(diǎn)導(dǎo)航應(yīng)用詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266