天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET 2.0數據教程之三:母板頁和站點導航

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


ASP.NET 2.0中操作數據::母板頁和站點導航

導言
通常,用戶友好的個性化站點都有著一致的,站點統一的頁面布局和導航體系。ASP.NET 2.0引入的兩個新特性給我們在統一站點的頁面布局和站點導航上提供了簡單而有效的工具,它們是母板頁和站點導航。母板頁允許開發者創建統一的站點模板和指定的可編輯區域。這樣,ASPx頁面只需要給模板頁中指定的可編輯區域提供填充內容就可以了,所有在母板頁中定義的其他標記將出現在所有使用了該母板頁的ASPx頁面中。這種模式允許開發者可以統一的管理和定義站點的頁面布局,因此可以容易的得到擁有統一的視覺和感覺的頁面并且還易于更新。

站點導航系統允許開發者定義站點地圖并提供了API以便通過程序查詢站點地圖信息。新的導航控件包括Menu,TreeView和SiteMapPath,這樣可以很容易的在一個一般的導航用戶界面元素里呈現全部或者部分站點地圖。我們將使用默認的站點導航提供者,這意味著我們的站點地圖將定義在一個xml格式的文件中。

為說明這些觀念并且使我們的教程的示例站點可用性更佳,讓我們通過本次課程定義一個站點統一的頁面布局,實現一個站點地圖,并且添加導航UI。在這個課程結束時我們的課程示例站點就擁有一個優美的設計效果了。



圖1:本課程的最終成果

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


步驟1:創建母板頁

第一步是為我們的站點創建母板頁。到目前為止我們的站點只有一個類型化的DataSet(Northwind.xsd,位于App_Code文件夾),業務邏輯層類庫(ProductsBLL.cs,CategoriesBLL.cs等等,這些都在App_Code文件夾里),數據庫(NORTHWIND.MDF,位于App_Data文件夾),配置文件(web.config),和一個CSS文件(Style.css)。
我整理這些頁面和文件以說明前面兩次課程中介紹的數據訪問層和業務邏輯層將會在以后課程的更多細節中重用這些示例。



圖2:我們項目中的文件

要創建一個母板頁,用右鍵點擊解決方案管理器中的項目名稱并選擇添加新項。然后從模板列表窗口中選擇母板類型并且命名為Site.master



圖3:添加一個母板頁到站點中

在母板頁中定義站點統一的頁面布局。你可以用設計視圖定義你需要的布局或者控件,你還可以手動的在代碼視圖中添加標記。在我們的母板頁中使用了定義在外部文件Style.css中的層疊樣式表來定義位置和風格。也許你不知道下面這些標記怎樣顯示,樣式表規則定義了導航用的<div>標簽中的內容絕對定位在頁面的左邊并且寬度固定為200像素。

 

 1<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="Site"
 
%>
 2
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5<html xmlns="http://www.w3.org/1999/xhtml" >
 6<head runat="server">
 7    <title>Working with Data Tutorials</title>
 8    <link href="Styles.css" rel="stylesheet" type="text/css" />
 9</head>
10<body>
11    <div id="wrapper">
12
13        <form id="form1" runat="server">
14
15            <div id="header">
16                <span class="title">Working with Data Tutorials</span>
17                <span class="breadcrumb">
18                 TODO: Breadcrumb will go here</span>
19            </div>
20
21            <div id="content">
22                <ASP:contentplaceholder id="MainContent"
23                 runat="server">
24                  <!-- Page-specific content will go here -->
25                </ASP:contentplaceholder>
26            </div>
27
28            <div id="navigation">
29                TODO: Menu will go here
30            </div>
31        </form>
32    </div>
33</body>
34</html>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField



步驟2:給站點添加一個主頁

定義母板頁后,我們準備給站點添加一些ASPx頁面。讓我們從添加我們的首頁Degault.ASPx開始吧。在解決方案管理器中右鍵點擊項目名稱并且選擇添加新建項目。從模板列表中選擇Web Form選項并且命名為Default.ASPx。并且,勾上“選擇母板頁”的復選框。



圖5:添加一個新Web Form并且勾上“選擇母板頁”的復選框

點擊確定按鈕后,將會詢問你新建的這個ASPx頁面使用哪個母板頁。也許你有多個母板頁在你的項目中,但是我們只有一個。



圖6:選擇你要使用的母板頁

選擇母板頁后,新建的ASPx會包含下面這些標記:
Default.ASPx

 

1<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile
="Default.ASPx.cs" Inherits="_Default" Title="Untitled Page" 
%>
2<ASP:Content ID="Content1" ContentPlaceHolderID="MainContent"
3  Runat="Server">
4</ASP:Content>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


設置@Page指令的Title屬性為Home并且添加一些歡迎詞到Content控件中:
Default.ASPx

 

 1<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile
="Default.ASPx.cs" Inherits="_Default" Title="Home" 
%>
 2<ASP:Content ID="Content1" ContentPlaceHolderID="MainContent"
 3  Runat="Server">
 4    <h1>Welcome to the Working with Data Tutorial Site</h1>
 5
 6    <p>This site is being built as part of a set of tutorials that
 7illustrate some of the new data access and databinding features in
 8ASP.NET 2.0 and Visual Web Developer.</p>
 9
10    <p>Over time, it will include a host of samples that
11demonstrate:</p>
12
13    <ul>
14        <li>Building a DAL (data access layer),</li>
15        <li>Using strongly typed TableAdapters and DataTables</li>
16        <li>Master-Detail reports</li>
17        <li>Filtering</li>
18        <li>Paging,</li>
19        <li>Two-way databinding,</li>
20        <li>Editing,</li>
21        <li>Deleting,</li>
22        <li>Inserting,</li>
23        <li>Hierarchical data browsing,</li>
24        <li>Hierarchical drill-down,</li>
25        <li>Optimistic concurrency,</li>
26        <li>And more!</li>
27    </ul>
28</ASP:Content>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


 

當Default.ASPx頁面被瀏覽器訪問時,ASP.NET引擎會合并母板頁的內容和ASPx頁的內容,并且將合并的內容呈現為最終的HTML發送到瀏覽器。當母板頁的內容被更新,所有使用了這個母板頁的ASPx頁面會在下次被請求時重新和新的母板頁內容合并。簡單的說,母板頁模型允許定義一個統一的布局模板(母板頁),當它改變時整個站點會反應這種改變。
添加更多的頁面到站點中
讓我們花一點時間添加另外的頁面到站點中,以便支持最終的各種各樣的課程的示例。這里總共會有超過35個示例,所以我們先創建一部分。以后會有很多類別的示例,為了更好的管理這些示例我們給每個分類添加一個文件夾?,F在我們添加三個文件夾:
• BasicReporting
• Filtering
• CustomFormatting
最后,如圖8所示向解決方案管理器中添加新文件。每添加一個文件的時候記住要勾上“選擇母板頁”的復選框。
圖8:添加下列文件

第三步:添加站點地圖
管理一個由大量網頁組成的網站的其中一個挑戰是要為訪問者瀏覽網站提供一個捷徑。作為開始,站點的導航結構必須被定義。下一步,這個結構必須轉換成適于導航的用戶界面元素,比如菜單或者位置導航。當有新頁面添加到站點和已有的頁面被移除的時候這個過程將要修改和校正。

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


ASP.NET 2.0以前,開發者需要自己創建站點導航結構,維護它并且將它轉化為適于導航的用戶界面元素。在ASP.NET 2.0里,開發者可以利用非常靈活的且內置的站點導航系統。ASP.NET 2.0站點導航系統允許開發者定義一個站點地圖并且提供了可以訪問這些信息的API。

默認的ASP.NET站點地圖提供者期望站點地圖信息存儲在xml格式的文件中。但是,建立在提供者模型上的站點導航系統是可以被擴展的以支持多種方式儲存的站點地圖。Jeff Prosise的文章,The SQL Site Map Provider You’ve Been Waiting For展示了怎樣創建將站點地圖存儲在SQL Server數據庫里的提供者;另外一個選擇是基于文件系統的站點地圖提供者。
在這個指南中,我們仍然使用ASP.NET2.0里默認的站點地圖提供者。要創建站點地圖,在解決方案管理器里右鍵點擊項目名稱,選擇添加新項,然后選擇站點地圖類型。命名為Web.sitemap然后單擊添加按鈕。

圖9:向你的項目中添加站點地圖
站點地圖文件是一個xml文件。注意:Visual Studio可以為站點地圖結構提供智能感知。站點地圖文件必須含有<siteMap>作為根節點,它必須至少含有一個<siteMapNode>子節點。這個<siteMapNode>元素又可以包含任意數量的<siteMapNode>子元素。

 

 

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


站點地圖模擬了文件系統。為每個文件夾添加一個<siteMapNode>元素,并且為每個ASPx頁面添加一個<siteMapNode>子元素,如此:
Web.sitemap:

 

 1<?xml version="1.0" encoding="utf-8" ?>
 2<siteMap xmlns="http://schemas.microsoft.com/ASPNET/SiteMap-File-1.0" >
 3
 4  <siteMapNode url="~/Default.ASPx" title="Home" description="Home">
 5      <siteMapNode title="Basic Reporting"
 6        url="~/BasicReporting/Default.ASPx"
 7        description="Basic Reporting Samples">
 8        <siteMapNode url="~/BasicReporting/SimpleDisplay.ASPx"
 9         title="Simple Display"
10         description="Displays the complete contents
11          of a database table." />
12        <siteMapNode url="~/BasicReporting/DeclarativeParams.ASPx"
13          title="Declarative Parameters"
14          description="Displays a subset of the contents
15            of a database table using parameters." />
16        <siteMapNode url="~/BasicReporting/ProgrammaticParams.ASPx"
17         title="Setting Parameter Values"
18         description="Shows how to set parameter values
19          programmatically." />
20      </siteMapNode>
21
22      <siteMapNode title="Filtering Reports"
23       url="~/Filtering/Default.ASPx"
24       description="Samples of Reports that Support Filtering">
25        <siteMapNode url="~/Filtering/FilterByDropDownList.ASPx"
26          title="Filter by Drop-Down List"
27description="Filter results using a drop-down list." />
28        <siteMapNode url="~/Filtering/MasterDetailsDetails.ASPx"
29         title="Master-Details-Details"
30         description="Filter results two levels down." />
31        <siteMapNode url="~/Filtering/DetailsBySelecting.ASPx"
32          title="Details of Selected Row"
33description="Show detail results for a selected item in a GridView." />
34      </siteMapNode>
35
36      <siteMapNode title="Customized Formatting"
37         url="~/CustomFormatting/Default.ASPx"
38         description="Samples of Reports Whose Formats are Customized">
39        <siteMapNode url="~/CustomFormatting/CustomColors.ASPx"
40         title="Format Colors"
41         description="Format the grid&apos;s colors based
42           on the underlying data." />
43        <siteMapNode
44          url="~/CustomFormatting/GridViewTemplateField.ASPx"
45          title="Custom Content in a GridView"
46          description="Shows using the TemplateField to
47          customize the contents of a field in a GridView." />
48        <siteMapNode
49          url="~/CustomFormatting/DetailsViewTemplateField.ASPx"
50          title="Custom Content in a DetailsView"
51          description="Shows using the TemplateField to customize
52           the contents of a field in a DetailsView." />
53        <siteMapNode url="~/CustomFormatting/FormView.ASPx"
54          title="Custom Content in a FormView"
55          description="Illustrates using a FormView for a
56           highly customized view." />
57        <siteMapNode url="~/CustomFormatting/SummaryDataInFooter.ASPx"
58          title="Summary Data in Footer"
59          description="Display summary data in the grids footer." />
60      </siteMapNode>
61
62  </siteMapNode>
63
64</siteMap>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


步驟4:利用站點地圖顯示菜單

ASP.NET 2.0中我們可以像ASP.NET 1.x一樣,有多種編程方式可以訪問數據,還可以通過新的數據源控件訪問。
這里有多個內置的數據源控件,比如用來訪問關系數據庫數據的SqlDataSource控件,用來訪問類所提供的數據的ObjectDataSoruce控件等等。你還可以創建你自己的自定義數據源控件。

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

為了獲取站點地圖中的數據,ASP.NET提供了SiteMapDataSource控件,它允許我們綁定一個Web控件來顯示我們的站點地圖。TreeView和Menu這兩個Web控件常常用來提供導航用戶界面。要綁定站點地圖中的數據到這兩個控件,添加一個SiteMapDataSource控件到頁面中,設置TreeView或者Menu控件的DataSourceID屬性值為SiteMapDataSource控件的ID屬性值就可以了。舉個例子,我們可以用下面這些標記將Menu控件到母板頁中:

 

1<div id="navigation">
2    <ASP:Menu ID="Menu1" runat="server"
3      DataSourceID="SiteMapDataSource1">
4    </ASP:Menu>
5
6    <ASP:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
7</div>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


 

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

 1<ASP:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">
 2    <ItemTemplate>
 3        <li>
 4            <ASP:HyperLink runat="server"
 5            NavigateUrl="<%# Eval("Url") %>">
 6            <%Eval("Title"%></ASP:HyperLink>
 7
 8            <ASP:Repeater runat="server"
 9             DataSource="<%# ((SiteMapNode)
10             Container.DataItem).ChildNodes %>">
11                <HeaderTemplate>
12                    <ul>
13                </HeaderTemplate>
14
15                <ItemTemplate>
16                    <li>
17                        <ASP:HyperLink runat="server"
18                         NavigateUrl="<%# Eval("Url") %>">
19                         <%Eval("Title"%></ASP:HyperLink>
20                    </li>
21                </ItemTemplate>
22
23                <FooterTemplate>
24                    </ul>
25                </FooterTemplate>
26            </ASP:Repeater>
27        </li>
28    </ItemTemplate>
29</ASP:Repeater>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


 

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

圖11:用兩個Repeater和一些CSS顯示的菜單
這個菜單在母板頁中定義的,綁定了在Web.sitemap中定義的站點地圖,這意味著所有站點地圖的修改會立即反應到所有使用了Site.master母板頁的頁面。

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


關掉視圖狀態

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

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

視圖狀態只在頁面上使用了Form時才會被保持;如果你的ASPx頁面沒有包含
<form runat=”server”>的聲明,那么最后產生的HTML標記中將不含有VIEWSTATE隱藏表單域。

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

可以將EnableViewState屬性設為false在頁面級或者控件級關閉視圖狀態,從而可以減少產生的標記的大小。Web控件利用視圖狀態在頁面返回時保持要綁定到數據顯示控件的數據,當關閉了數據顯示控件的視圖狀態后,在每次頁面返回時都必須重新綁定數據到控件。在ASP.NET 1.x的時候這個職責落到開發者身上;在ASP.NET 2.0里,頁面返回時,數據顯示控件會在必要的時候重新綁定數據。

設置Repeater控件的EnableViewState為false可以減少頁面的視圖狀態??梢酝ㄟ^屬性窗口設置或者在代碼視圖里手動修改。通過這些改變,Repeater標記將會像這樣:

 

1<ASP:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1"
EnableViewState
="False">
2    <ItemTemplate>
3         <i>ItemTemplate contents omitted for brevity</i>
4    </ItemTemplate>
5</ASP:Repeater>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


步驟5:添加breadcrumb導航

為完成母板頁,讓我們給每個頁面添加一個breadcrumb導航UI元素。breadcrum導航會快速的顯示用戶當前在站點中的位置。添加一個breadcrumb導航在ASP.NET 2.0中是簡單的-只要添加一個SiteMapPath控件到頁面上就可以了;不需要更多的代碼。
在我們的站點中,添加這個控件到頭部的<div>標簽中:

 

1<span class="breadcrumb">
2    <ASP:SiteMapPath ID="SiteMapPath1" runat="server">
3    </ASP:SiteMapPath>
4</span>

系列文章導航:

ASP.NET 2.0數據教程之一:創建一個數據訪問層

ASP.NET 2.0數據教程之二:創建一個業務邏輯層

ASP.NET 2.0數據教程之三:母板頁和站點導航

ASP.NET 2.0數據教程之四:使用ObjectDataSource展現數據

ASP.NET 2.0數據教程之五:聲明參數

ASP.NET 2.0數據教程之六:編程設置ObjectDataSource的參數值

ASP.NET 2.0數據教程之七:使用DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之八:使用兩個DropDownList過濾的主/從報表

ASP.NET 2.0數據教程之九:跨頁面的主/從報表

ASP.NET 2.0數據教程之十:使用 GridView 和DetailView實現的主/從報表

ASP.NET 2.0數據教程之十一:基于數據的自定義格式化

ASP.NET 2.0數據教程之十二:在GridView控件中使用TemplateField


 

在前面的Repeater例子中我將SiteMap的數據綁定到Repeater上;當然,這個SectionLevelTutorialListing用戶控件也將使用這種方法。在Page_Load事件里,有一個檢測程序以確保這是否是第一次訪問該頁面(不是返回)并且這個頁面的URL要映射到站點地圖中的一個節點。如果頁面使用了這個用戶控件,那么就沒有對應的
<siteMapNode>,SiteMap.CurrentNode會返回null并且將沒有數據綁定到Repeater控件。假設我們有一個CurrentNode,我可以將它的ChildNodes集合綁定到這個Repeater。每個部分的Default.ASPx頁面是這個部分內教程的父節點,這些代碼會展示每個部分內教程的連接和描述,下面是屏幕截圖:
一旦這個Repeater創建好后,在設計視圖里打開每個文件夾的Default.ASPx頁面,將這個用戶控件拖到你要顯示的地方。

圖14:用戶控件已經添加到Default.ASPx頁面上
圖15:Basic Reporting指南的列表

總結

完成站點地圖和母板頁后,現在我們的教程站點擁有統一的頁面布局和導航體系。盡管我們的站點有很多頁面,但是我們可以集中的更新站點頁面布局和站點導航信息。明確一點,頁面布局信息在母板頁Site.master中定義,站點地圖在Web.sitemap中定義。我們不需要寫任何代碼就完成了站點頁面布局和導航機制,Visual Studio提供了所見即所得的設計時支持。
完成了數據訪問層和業務邏輯層并且定義了一個統一的頁面布局和站點導航系統,下一步我們將探索通用報表模式。在接下來的三個指南里我們將會看到基本報表任務-用GridView,DetailsView和FormView控件顯示從業務邏輯層獲取的數據。

祝編程快樂!
附加讀物

想了解本教程中討論過的技術內容相關的更多的信息,請參考下列資源:

 ASP.NET Master Pages Overview
• Master Pages in ASP.NET 2.0
• ASP.NET 2.0 Design Templates
• ASP.NET Site Navigation Overview
• Examining ASP.NET 2.0’s Site Navigation
• ASP.NET 2.0 Site Navigation Features
• Understanding ASP.NET View State
• How to: Enable Tracing for an ASP.NET Page
• ASP.NET User Controls
作者簡介
Scott Mitchell,著有六本ASP/ASP.NET方面的書,是4GuysFromRolla.com的創始人,自1998年以來一直應用微軟Web技術。Scott是個獨立的技 術咨詢顧問,培訓師,作家,最近完成了將由Sams出版社出版的新作,24小時內精通ASP.NET 2.0。他的聯系電郵為[email protected],也可以通過他的博客http://ScottOnWriting.NET與他聯系。

NET技術ASP.NET 2.0數據教程之三:母板頁和站點導航,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 老司机福利在 线影院 | 天天操天天干天天爽 | 亚洲国产精品热久久 | 国产精品A久久777777 | 麻豆免费观看高清完整视频 | 猫咪av永久最新域名 | 久久99精品AV99果冻 | 亚洲最大日夜无码中文字幕 | 国产人妻人伦精品9 | 友田真希息与子中文字幕 | 99热免费精品店 | 美女裸露胸部100%无遮挡 | 国产99精品视频一区二区三区 | 国产色婷婷精品人妻蜜桃成熟时 | 伦理片 a在线线版韩国 | 含羞草影院免费区 | 国产精品永久免费 | 国产人成高清在线视频99 | 国产精品外围在线观看 | 污到湿的爽文免费阅读 | 黄色三级视频在线 | 麻豆精品传媒2021网站入口 | 久久成人精品免费播放 | 边摸边吃奶边做激情叫床视 | 国语自产视频在线 | 亚洲精品国产精品麻豆99 | 天美传媒在线观看完整高清 | 乱淫67194| 日韩欧美中文字幕一区 | 最新亚洲中文字幕在线观看 | 亚洲娇小性色xxxx | 干丝袜美女 | 曰批视频免费40分钟不要钱 | 欧美 亚洲 另类 综合网 | 日本xxx在线观看免费播放 | 99精品中文字幕在线观看 | A级毛片高清免费网站不卡 a级毛片高清免费视频 | 蝴蝶中文娱乐 | 国产精品久久久久影院嫩草 | 人妻免费久久久久久久了 | 久久青草费线频观看国产 |