幾乎每個網站裡
為了方便用戶在網站中進行頁面導航
都少不了使用頁面導航控件
有了頁面導航的功能
用戶可以很方便地在一個復雜的網站中進行頁面之間的跳轉
在以往的WEB編程中
要寫一個好的頁面導航功能
並不是那麼容易的
也要使用一些技巧
而在
中
為了方便進行頁面導航
新增了一個叫做頁面導航控件sitemapdatasource
其中還可以綁定到不同的其他頁面控件
比如treeview
menu等
十分靈活
使到能很方便地實現頁面導航的不同形式
而且還提供了運行時的編程接口
可以以編程的形式動態實現頁面導航控件
本文將簡單以幾個例子來介紹一下在
中如何實現頁面導航
頁面導航的結構和sitemapdatasource控件
在
中
要實現頁面導航
應該先以xml的形式
提供出整個網站的頁面結構層次
我們可以編寫一個叫web
sitemap的XML文本文件
在該文件中定義出整個要導航頁面的結構層次
舉例如下
<?xml version=
encoding=
utf
?>
<siteMap>
<siteMapNode title=
Default
description=
Home
url=
Default
aspx
>
<siteMapNode title=
Members
description=
Members
url=
Members
aspx
>
<siteMapNode title=
My Account
description=
My Account
url=
MyAccount
aspx
/>
<siteMapNode title=
Products
description=
Products
url=
Products
aspx
/>
</siteMapNode>
<siteMapNode title=
Administration
description=
Administration
url=
~/Admin/Default
aspx
>
<siteMapNode title=
Customer
description=
Customer Admin
url=
~/Admin/Customer/default
aspx
/>
<siteMapNode title=
Products Admin
description=
Products Admin
url=
~/Admin/ProductsAdmin
aspx
/>
</siteMapNode>
</siteMapNode>
</siteMap>
我們可以看到
其中
web
sitemap文件必須包含根結點sitemap
而且
設置一個父sitemapnode結點
該結點表明是默認的站點首頁
在該父sitemapnode結點下
可以有若干個子sitemapnode結點
分別按層次結構代表了網站的各子欄目(留意一下上例中
各個子結點之間的包含關系)
而每一個sitemapnode結點中
有如下若干個屬性
)URL屬性
該屬性指出要導航的欄目的地址鏈接
在web
sitemap中定義中
必須是每個欄目的相對地址
)Title屬性
該屬性指出每個子欄目的名稱
顯示在頁面中
)Description屬性
該屬性指定時
則用戶在鼠標移動到該欄目時
出現有關該欄目的相關提示
類似於tooltips屬性
在設計好sitemap屬性後
接下來就可以一步步構建頁面導航功能了
主要有兩個步驟
) 向頁面中添加sitemapdatasource控件
該控件會自動感應綁定web
sitemap中的內容
) 將sitemapdatasource控件綁定到如sitemappath
treeview
menu等控件中
也就是說
將它們的數據源設置為該sitemapdatasource控件
知道了方法後
我們下面就分別以treeview
menu
sitemappath三種控件為例子
介紹一下如何和sitemapdatasource控件進行配合使用
先來介紹使用treeview控件和sitemapdatasource 控件配合使用的方法
Treeview樹形列表控件十分適合於用來做頁面導航
為了能具體說明
我們充分利用中的masterpage控件
先搭建出一個網站的基本框架架構
在visual web developer
beta
中
新建一個網站
之後添加上文的web
sitemap文件
再添加一個名叫Navigation的master類型的頁面
代碼如下
<%@ Master Language=
C#
%>
<html xmlns=
/
/xhtml
>
<head id=
Head
runat=
server
>
<title>Master Page</title>
</head>
<body>
<form id=
form
runat=
server
>
<div>
<table border=
>
<tr>
<td >
<asp:TreeView ID=
TreeView
Runat=
server
DataSourceID=
SiteMapDataSource
ExpandDepth=
ShowExpandCollapse=
False
NodeIndent=
>
<LevelStyles>
<asp:TreeNodeStyle Font
Bold=
True
Font
Underline=
False
/>
<asp:TreeNodeStyle Font
Italic=
True
Font
Underline=
False
/>
<asp:TreeNodeStyle Font
Size=
X
Small
ImageUrl=
bullet
gif
Font
Underline=
False
/>
</LevelStyles>
<NodeStyle ChildNodesPadding=
/>
</asp:TreeView>
</td>
<td >
<asp:contentplaceholder id=
ContentPlaceHolder
runat=
server
>
</asp:contentplaceholder>
</td>
</tr>
</table>
<asp:SiteMapDataSource ID=
SiteMapDataSource
Runat=
server
/>
</div>
</form>
</body>
</html>
在上面的代碼中
其中的TREEVIEW控件中的DATASORUCE屬性中
就指定了sitemapdatasource控件
並且在treeview控件中
也定義了不同結點的樣式
在完成了masterpage頁面後
就等於已經把網站的模版頁建立起來了
接下來就可以新建其他子頁面
以繼承masterpage頁面
並且新建各自頁面的內容了
比如
新建一個default
aspx頁面
代碼如下
<%@ Page Language=
C#
MasterPageFile=
Navigation
master
Title=
Default Page
%>
<asp:Content ContentPlaceHolderID=
ContentPlaceHolder
ID=
Content
Runat=
Server
>
This is the default page
</asp:Content>
可以看到
當建立了模版頁後
就可以新建其他的子頁面了
只需要在其中的contentplaceholderid中寫入不同的內容就可以了
運行起來後
效果如圖
educitycn/img_///jpg > 接下來
我們來介紹如何將menu菜單控件和sitemapdatasource 控件配合使用
其中
我們在上面的例子的基礎上
在<table border=
>下面增加如下代碼就可以了
<tr height=
px
>
<td colspan=
align=
left
>
<asp:Menu ID=
Menu
Runat=
Server
DataSourceID=
SiteMapDataSource
>
</asp:Menu>
</td>
</tr>
其中
我們增加了一個menu控件
其中將其datasourceid屬性設定為sitemapdatasource
就可以了
運行如下圖
當然
我們可以改變menu控件的顯示位置
如可以將其改成垂直樣式顯示
educitycn/img_///jpg > 而對於我們經常見到的顯示出頁面當前路徑的導航條功能
在
中也可以輕易實現
我們可以使用其中的sitemappath控件
我們緊接著在上文代碼中的menu控件下
增加如下代碼
<tr height=
px
>
<td colspan=
align=
left
>
Currently Selected Page is:
<asp:SiteMapPath Runat=
Server
ID=
SiteMapPath
></asp:SiteMapPath>
</td>
</tr>
要注意的是
只要增加sitemappath控件就可以了
因為它會自動和已經增加的sitemapdatasource控件進行綁定的
我們為了說明問題
另外增加一個頁面member
aspx
代碼如下
<%@ Page Language=
C#
MasterPageFile=
Navigation
master
Title=
Members Page
%>
<asp:Content ContentPlaceHolderID=
ContentPlaceHolder
ID=
Content
Runat=
Server
>
This is the members page
</asp:Content>
運行結果如下
educitycn/img_///jpg > 最後
我們看一下
如何通過編程的方式來獲取頁面導航中的相關數據
其中
必須引用到的是sitemap類
該類提供了很多相關的方法和屬性
最重要的是currentnode屬性
它可以指出當前用戶正在浏覽的是哪一個欄目頁面
這用來跟蹤用戶在網站中的行動軌跡
並進行站點數據統計
有時是很有用的
舉例如下
<%@ Page Language=
C#
MasterPageFile=
Navigation
master
Title=
Members Page
%>
<script runat=
Server
>
void Page_Load(object sender
EventArgs e)
{
Response
Write(
The currently selected root node is:
+ SiteMap
CurrentNode
Description +
<br>
);
Response
Write(
The Parent for the currently selected node is :
+
SiteMa
From:http://tw.wingwit.com/Article/program/net/201311/12540.html