真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NET2.0中如何使用SiteMapDataSource控件

本篇文章給大家分享的是有關(guān)ASP.NET 2.0中如何使用SiteMapDataSource控件,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、巴里坤哈薩克ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的巴里坤哈薩克網(wǎng)站制作公司

數(shù)據(jù)源控件作為你的aspx頁面和底層數(shù)據(jù)的代理。為了顯示數(shù)據(jù)源控件查詢到的數(shù)據(jù),我們要添加其他Web控件到頁面上,并且將它和數(shù)據(jù)源控件綁定。要綁定一個Web控件到一個數(shù)據(jù)源控件,只需要簡單的設(shè)置這個Web控件的DataSourceID屬性值為數(shù)據(jù)源控件的ID屬性值。

為了獲取站點(diǎn)地圖中的數(shù)據(jù),asp.net提供了SiteMapDataSource控件,它允許我們綁定一個Web控件來顯示我們的站點(diǎn)地圖。TreeView和Menu這兩個Web控件常常用來提供導(dǎo)航用戶界面。要綁定站點(diǎn)地圖中的數(shù)據(jù)到這兩個控件,添加一個SiteMapDataSource控件到頁面中,設(shè)置TreeView或者M(jìn)enu控件的DataSourceID屬性值為SiteMapDataSource控件的ID屬性值就可以了。舉個例子,我們可以用下面這些標(biāo)記將Menu控件到母板頁中:

< div id="navigation">      < asp:Menu ID="Menu1" runat="server"       DataSourceID="SiteMapDataSource1">      < /asp:Menu>       < asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />  < /div>

為了生成優(yōu)化的HTML,我們可以綁定SiteMapDataSource控件到Repeater控件,如下:

< div id="navigation">       < ul>           < li>< asp:HyperLink runat="server" ID="lnkHome"           NavigateUrl="~/Default.aspx">Home< /asp:HyperLink>< /li>              < asp:Repeater runat="server" ID="menu"            DataSourceID="SiteMapDataSource1">               < ItemTemplate>                   < li>                      < asp:HyperLink runat="server"                       NavigateUrl="< %# Eval("Url") %>">                        < %# Eval("Title") %>                      < /asp:HyperLink>                  < /li>              < /ItemTemplate>          < /asp:Repeater>      < /ul>       < asp:SiteMapDataSource ID="SiteMapDataSource1"       runat="server" ShowStartingNode="false" />  < /div>

SiteMapDataSource控件每次返回站點(diǎn)地圖層次中的一級,從站點(diǎn)地圖中的根節(jié)點(diǎn)開始(在我們的站點(diǎn)地圖中是Home),然后是下一個級(Basic Reporting,Filtering Reports和Customized Formatting)等等。

當(dāng)將SiteMapDataSource綁定到Repeater時,它遍歷***級并且用ItemTemplate顯示***級的每個SiteMapNode實(shí)例。我們可以使用Eval(屬性名稱)訪問SiteMapNode的細(xì)節(jié),這樣我們就可以得到SiteMapNode的Url和Title屬性給HyperLink控件。

下面顯示的是上面使用Repeater控件例子生成的HTML標(biāo)記:

< li>       < a href="/Code/BasicReporting/Default.aspx">Basic Reporting< /a>   < /li>      < li>       < a href="/Code/Filtering/Default.aspx">Filtering Reports< /a>   < /li>      < li>      < a href="/Code/CustomFormatting/Default.aspx">       Customized Formatting< /a>  < /li>

從上面可以看出,站點(diǎn)地圖的第二級節(jié)點(diǎn)(Basic Reporting,Filtering Reports和Customized Formatting)被顯示而不是***個。

這是因?yàn)镾iteMapDataSource控件的ShowStartingNode屬性被設(shè)為false,導(dǎo)致SiteMapDataSource跳過了站點(diǎn)地圖的根節(jié)點(diǎn)取而代之的是從站點(diǎn)地圖的層次的第二級開始返回信息。

為了顯示Basic Reporting,Filtering Reports和Customized Formatting的子SiteMapNode,我們可以向先前的Repeater的ItemTemplate里添加另外一個Repeater。第二個Repeater將綁定到SiteMapNode實(shí)例的子結(jié)點(diǎn)屬性,如下:

< asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">      < ItemTemplate>          < li>              < asp:HyperLink runat="server"             NavigateUrl="< %# Eval("Url") %>">              < %# Eval("Title") %>< /asp:HyperLink>                < asp:Repeater runat="server"               DataSource="< %# ((SiteMapNode)               Container.DataItem).ChildNodes %>">                  < HeaderTemplate>                      < ul>                  < /HeaderTemplate>                   < ItemTemplate>                      < li>                          < asp:HyperLink runat="server"                          NavigateUrl="< %# Eval("Url") %>">                           < %# Eval("Title") %>< /asp:HyperLink>                      < /li>                  < /ItemTemplate>                   < FooterTemplate>                      < /ul>                  < /FooterTemplate>              < /asp:Repeater>          < /li>      < /ItemTemplate>  < /asp:Repeater>

這兩個Repeater生成的HTML標(biāo)記(為了節(jié)省篇幅一些標(biāo)記被移除了):

< li>       < a href="/Code/BasicReporting/Default.aspx">Basic Reporting< /a>       < ul>          < li>             < a href="/Code/BasicReporting/SimpleDisplay.aspx">               Simple Display< /a>          < /li>          < li>             < a href="/Code/BasicReporting/DeclarativeParams.aspx">              Declarative Parameters< /a>         < /li>         < li>            < a href="/Code/BasicReporting/ProgrammaticParams.aspx">              Setting Parameter Values< /a>         < /li>      < /ul>  < /li>   < li>      < a href="/Code/Filtering/Default.aspx">Filtering Reports< /a>        < /li>   < li>      < a href="/Code/CustomFormatting/Default.aspx">        Customized Formatting< /a>        < /li>

使用的CSS風(fēng)格選擇自Rachel Andrew的書:The CSS Anthology: 101 Essential Tips, Tricks, & Hacks,< ul>和< li>元素的風(fēng)格將顯示如下:

ASP.NET 2.0中如何使用SiteMapDataSource控件

圖11:用兩個Repeater和一些CSS顯示的菜單

這個菜單在母板頁中定義的,綁定了在Web.sitemap中定義的站點(diǎn)地圖,這意味著所有站點(diǎn)地圖的修改會立即反應(yīng)到所有使用了Site.master母板頁的頁面。

關(guān)掉視圖狀態(tài)

所有的asp.net控件可以隨意的保持它們的狀態(tài)到View State(譯注:當(dāng)原文中采用的是開頭字母大寫的ViewState將不翻譯)中,最終生成HTML時它被系列化并保存在一個隱藏的表單域中。控件用ViewState來記憶它們在頁面返回時被程序改變的狀態(tài),比如Web控件綁定的數(shù)據(jù)。如果視圖狀態(tài)允許信息可以在頁面返回時保持,它會增大發(fā)送到客戶端HTML代碼的尺寸,如果在沒有確切的監(jiān)控下會使頁面膨脹得很厲害。數(shù)據(jù)顯示控件-尤其是GridView控件-會顯著地增加大量的額外的標(biāo)記到頁面中。當(dāng)然,這些增長可能對寬帶用戶毫無影響,但是視圖狀態(tài)會給撥號上網(wǎng)的用戶增加幾秒鐘的延遲。

要觀察視圖狀態(tài)的影響,在瀏覽器里打開這個頁面然后查看頁面的源代碼(對于Internet Explorer,點(diǎn)擊”查看”菜單并且選擇源代碼選項(xiàng))。你還可以打開頁面跟蹤選項(xiàng)以觀察這個頁面上每個控件的視圖狀態(tài)。視圖狀態(tài)的信息被系列化并放在位于跟隨在< form>標(biāo)簽后面的< div>元素里的名為_VIEWSTATE的隱藏表單域中。

視圖狀態(tài)只在頁面上使用了Form時才會被保持;如果你的aspx頁面沒有包含

< form runat=”server”>的聲明,那么***產(chǎn)生的HTML標(biāo)記中將不含有VIEWSTATE隱藏表單域。

母板頁產(chǎn)生的VIEWSTATE隱藏表單域大概有1800個字節(jié)。這些額外的數(shù)據(jù)主要是SiteMapDataSource控件為Repeater控件提供的數(shù)據(jù)內(nèi)容產(chǎn)生的。也許1800字節(jié)左右看起來還不算很多,但是使用了GridView并且使用了很多字段和記錄的視圖狀態(tài)很容易就膨脹10倍或更多。

可以將EnableViewState屬性設(shè)為false在頁面級或者控件級關(guān)閉視圖狀態(tài),從而可以減少產(chǎn)生的標(biāo)記的大小。Web控件利用視圖狀態(tài)在頁面返回時保持要綁定到數(shù)據(jù)顯示控件的數(shù)據(jù),當(dāng)關(guān)閉了數(shù)據(jù)顯示控件的視圖狀態(tài)后,在每次頁面返回時都必須重新綁定數(shù)據(jù)到控件。在asp.net 1.x的時候這個職責(zé)落到開發(fā)者身上;在asp.net 2.0里,頁面返回時,數(shù)據(jù)顯示控件會在必要的時候重新綁定數(shù)據(jù)。

設(shè)置Repeater控件的EnableViewState為false可以減少頁面的視圖狀態(tài)。可以通過屬性窗口設(shè)置或者在代碼視圖里手動修改。通過這些改變,Repeater標(biāo)記將會像這樣:

< asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1"   EnableViewState="False">      < ItemTemplate>           < i>ItemTemplate contents omitted for brevity< /i>       < /ItemTemplate>  < /asp:Repeater>

經(jīng)過這些變化,頁面產(chǎn)生的視圖狀態(tài)減少到52個字節(jié),減少了97%的視圖狀態(tài)數(shù)據(jù)!在這個指南系列里我會關(guān)閉所有數(shù)據(jù)控件的視圖狀態(tài)以減少產(chǎn)生標(biāo)記的大小。在大多數(shù)例子里會在沒有提示的情況下將EnableViewState屬性設(shè)為false。

以上就是ASP.NET 2.0中如何使用SiteMapDataSource控件,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁標(biāo)題:ASP.NET2.0中如何使用SiteMapDataSource控件
分享鏈接:http://weahome.cn/article/popppj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部