ASP.NET - 鄧姚文1032課表

Download Report

Transcript ASP.NET - 鄧姚文1032課表

ASP.NET 2.0
Standard Control Collection
鄧姚文
http://www.ywdeng.idv.tw
Standard Control Collection





Namespace 、 Import
Directive
Properties in Web
Controls
Button、LinkButton、
ImageButton
Label、HyperLink、
Image 、 ImageMap
TextBox





2
CheckBox 、
CheckBoxList
RadioButton 、
RadioButtonList
ListBox 、
DropDownList
Table、TableRow 、
TableCell
Literal、BulletedList 、
HiddenField
Standard Control Collection




Calendar、DayRender
、 SelectionChanged
、
VisibleMonthChanged
、月曆文字的變化、
刪除日期下面的橫線
AdRotator
FileUpLoad
Wizard




Panel 、 PlaceHolder
MultiView 、 View
SubstitutionControl、
OutputCache directive
Localize、Xml
Properties in WebControl
名稱
AccessKey
BackColor
BorderColor
BorderStyle
BorderWidth
Enabled
Font-Bold
Font-Italic
說明
設定某個 control 的 access鍵,例如 AccessKey="B",表示
按Alt+B,游標即移至該control。
背景顏色。
邊框顏色。
邊框型式,有dashed、dotted、double、groove、inset、
none、notset、outset、ridge、solid等。
邊框寬度。
若設定成false,則此control為read only。
Text以粗體字表現,值為true或false。
Text以斜體字表現,值為true或false。
**本章最後列出所有controls共有的properties、methods、events,見表
3.5。
4
Properties in WebControl
名稱
Font-Overline
Font-Size
Font-Strikout
Font-Underline
ForeColor
Height
ID
TabIndex
Visible
Width
說明
Text之上加橫線,值為true或false。
Text字體大小。
Text之中加橫線,值為true或false。
Text加底線,值為true或false。
Text的顏色。
Control 的高度。
Control 的identifier。
control在此網頁的tab次序。
可見與否,visible="false",則為不可見的。
Control 的寬度。
Namespace、Import
Directive(1/2)
圖3.10 用物件瀏覽器觀察namespaces
6
Namespace、Import
Directive(2/2)
圖3.11 自動import進使用者網頁中的namespaces
System
System.Web
System.Collections.Specialized
System.Web.Security
System.IO
System.Web.UI
System.Text.RegularExpressions
System.Web.UI.WebControls
System.Collections
System.Web.Caching
System.Configuration
System.Web.SessionState
System.Text
System.Web.UI.HtmlControls
7
Button、LinkButton、ImageButton (1/6)

Button control 語法:
<asp:Button id="此control的ID"
Text="按鈕文字"
OnClick="副程式名稱"
…
Ex: WebPage0302.aspx.cs
runat="server" />
8
Internet Programming Ch.3
Button、LinkButton、
ImageButton (2/6)
LinkButton 語法:
<asp:LinkButton id="此control的ID"
Text="按鈕文字"
OnClick="副程式名稱"
…
runat="server"
/>
9
Internet Programming Ch.3
Button、LinkButton、
ImageButton (3/6)
ImageButton 語法:
<asp:ImageButton id="此control的ID"
ImageUrl="圖片檔案的URL"
ImageAlign="放置圖片的位置"
AlternateText="滑鼠停留時顯示的文字"
OnClick="副程式名稱"
…
runat="server" />
Button、LinkButton、ImageButton (4/6)
圖3.8 瀏覽WebPage0303.aspx
圖3.9 按第二個鈕後的畫面
11
Internet Programming Ch.3
<script runat="server">
void ChangeBorder(object obj, EventArgs e)
{
btnButton.BorderStyle = BorderStyle.Dashed;
}
void Reset(object obj, ImageClickEventArgs e)
{
btnButton.BorderStyle = BorderStyle.Outset;
}
</script>
<script language="javascript">
function SecondChance() {
alert('Chage the border of the above button.');
}
</script>
<form id="form1" runat="server">
<asp:Button ID="btnButton"
PostBackUrl="~/WebPage0304.aspx" Text="瀏覽本頁"
runat="server" /><br />
<asp:LinkButton ID="lbtButton" Text="Change
Button border" OnClientClick="SecondChance()"
OnClick="ChangeBorder" runat="server" /><br />
<asp:ImageButton ID="ibtnButton"
AlternateText=" Reset the button border "
ImageUrl="WebPage0304.bmp" OnClick="Reset"
runat="server" />
</form>
Label、HyperLink、Image、
ImageMap (1/6)
Image control 語法:
<asp:Image id="此control的ID"
ImageUrl="圖片檔案的URL"
ImageAlign="放置圖片的位置"
AlternateText="滑鼠停留時顯示的文字"
…
runat="server" />
14
Label、HyperLink、Image、
ImageMap (2/6)
HyperLink control 語法 :
<asp:HyperLink id="control的ID"
ImageUrl="圖片檔案的URL"
NavigateUrl="超連結網址URL"
Target="目標視窗"
Text="超連結文字"
…
Runat="server" />
Label、HyperLink、Image、
ImageMap (3/6)
Label control 語法:
<asp:Label id="此control的ID"
Text="標示的文字"
AssociatedControlID="與此Label結合
的Control"
AccessKey="N"
…
runat="server" />
16
Internet Programming Ch.3
Label、HyperLink、Image、
ImageMap (4/6)
<asp:Label id="此control的ID"
AssociatedControlID=""
AccessKey=""
…
runat="server" >
標示的文字 (若文字很長,可以此方式撰寫)
</asp:Label>
Label、HyperLink、Image、
ImageMap (5/6)
<asp:Label ID="lblHeader" Height="25px"
Width="100%" BackColor="#99ff99"
ForeColor="white" Font-Bold="True"
AssoicatedControlID="myTextBox"
Text="A Label Example" AccessKey="N"
Runat="server"/>
<form runat="server">
<asp:TextBox ID="myTextBox"
runat="server" />
</form>
18
Label、HyperLink、Image、ImageMap (6/6)

ImageMap control 語法:
<asp:ImageMap id="此control的ID"
ImageUrl = "地圖或圖片檔案的URL"
ImageAlign="地圖在網頁中的擺放位置"
HotSpotMode="Hot Spot的模式"
OnClick="副程式名稱"
…
runat="server" />
<asp:CircleHotSpot … />
<asp:RectangleHotSpot … />
<asp:PolygonHotSpot … />
</asp:ImageMap >
19
Internet Programming Ch.3
ImageMap

ImageAlign

AbsBottom, AbsMiddle, Baseline, Bottom, Left,
Middle, NotSet, Right, TextTop, Top
20
Internet Programming Ch.3
ImageMap

Hot Spot (熱點)

CircleHotSpot


RectangleHotSpot


(X, Y), Radius, NavigateUrl, HotSpotMode,
PostBackValue
Left, Right, Top, Bottom, NavigateUrl, HotSpotMode,
PostBackValue
PolygonHotSpot

(X1, Y1), (X2, Y2), …, (Xn, Yn), NavigateUrl,
HotSpotMode, PostBackValue
ImageMap

HotSpotMode="{Inactive|Navigate|NotSet|P
ostBack}"

Inactive


Navigate (default 內定)


瀏覽所指定的網址
NotSet


無作用
default setting
PostBack

return PostBackValue
ImageMap
<%@ Page Language="C#" %>
<script runat="server">
void ShowInfo(object obj, ImageMapEventArgs e) {
Response.Write("There is no university in " & e.PostBackValue) ;
}
</script>
<html><body><form runat="server">
<asp:ImageMap ImageUrl="WebPage0307.jpg" OnClick="ShowInfo" runat="server">
<asp:CircleHotSpot
X="110" Y="115" Radius="20"
NavigateUrl="http://www.google.com" />
<asp:RectangleHotSpot
Left="135" Right="155" Top="80" Bottom="150"
NavigateUrl="http://www.usc.edu.tw" />
<asp:PolygonHotSpot
Coordinates="115,160,135,180,110,210,105,237,108,200"
HotSpotMode="PostBack" PostBackValue="TaiDong." />
</asp:ImageMap>
</form></body></html>
23
Internet Programming Ch.3
ImageMap
(a)
(b)
(c)
(d)
圖3.14 瀏覽WebPage0306.aspx
24
Internet Programming Ch.3
TextBox Properties、Events
名稱
AutoPostBack
Columns
MaxLength
ReadOnly
說明
若AutoPostBack="true",則當
TextChanged事件發生後,立即執行對
應該事件的副程式。若
AutoPostBack="false",則當form被
傳送後,OnTextChanged對應的副程式
才會被執行。
當TextMode="MultiLine"時的欄位行
數。
欄位內最多可鍵入的字數,如
MaxLength="10",則該欄最多鍵入10
個characters。
欄位內容是25readonly(唯讀)的。
TextBox Properties、Events
名稱
說明
Rows
當TextMode="MultiLine"時的欄位列
數。
Text
TextBox中的文字內容,通常當作
TextBox的初值或預設值。
TextMode
有3種modes:SingleLine(單行)、
MultiLine(多行)及Password(密碼),
預設值為SingleLine。
Wrap
當TextMode="MultiLine"時,若
Wrap="true",則一行資料打滿時,游
標會自動換行。
OnTextChanged 當欄位內容改變時,會觸發此事件。
TextBox常用的Properties、
Events
<%@ Page Language= "C#" %>
WebPage0308
<script>
void Show(Object obj, EventArgs e){
lblMessage.text = tbData.text;
}
</script>
<html>
<body>
<form runat="server">
<asp:TextBox id="tbData" TextMode="MultiLine"
Rows="2" Columns="10 "
Wrap="True" OnTextChanged="Show" runat="server" /><br>
<asp:Button Text="submit" Runat="server" /><br>
<asp:Label id="lblMessage" text="Look!" runat="server"
/>
</form>
</body>
</html>
27
CheckBox
<%@ Page Language= "C#" %>
<script runat="server">
void Partner(object obj, EventArgs e){
if (cbBridge.Checked)
cbBridge.text += "我們有相同的興趣";
}
void Prohibit (object obj, EventArgs e){
if (cbChineseBridge.Checked == true)
WebPage0309
cbChineseBridge.text += "回頭是岸";
else
cbChineseBridge.text = "麻將";
}
</script>
<html><body><form runat="server">
請勾選你的愛好<br>
<asp:CheckBox id="cbBasketBall"
Text="籃球" runat="server"/><br>
<asp:CheckBox id="cbMusic"
Text="音樂" runat="server" /><br>
<asp:CheckBox id="cbGo"
Text="圍棋" runat="server" /><br>
<asp:CheckBox id="cbBridge"
Text="橋牌" runat="server"
OnCheckedChanged="Partner" /><br>
<asp:CheckBox id="cbChineseBridge"
Text="麻將" runat="server"
OnCheckedChanged="Prohibit " AutoPostBack="True" />
</form></body></html>
28
CheckBoxList 常用 Properties及
Events
名稱
說明
RepeatDirection
選項要以Horizontal(水平)或Vertical(垂直)
的方式呈現,預設值為 Horizontal。
RepeatColumns
當選項以Horizontal方式呈現時,每一橫行要包
含多少選項。
RepeatLayout
選項要以Table(表格)的方式排列,或是以
Flow(緊鄰)的方式排列。以Flow的方式排列較易
參差不齊,預設值為Table。
CellPadding
當以Table的方式排列時,Table中每個欄位的文
字和邊框的距離。
CellSpacing
當以Table的方式排列時,Table中每個欄位彼此
間的距離。
OnSelectedIndexChanged
當勾選不同的選項時,即觸發
SelectedIndexChanged 事件,會執行對應的
副程式。
29
Internet Programming Ch.3
<html>
<body>
<form runat="server">
請勾選你的興趣
< %@ Page Language= "C#" %>
<br>
<script runat ="server">
<asp:CheckBoxList ID="cblInterests"
string strMessage;
RepeatDirection="Horizontal"
void Interest (object obj, EventArgs e)
RepeatColumns="3"
{
CellSpacing="5"
int index;
AutoPostBack="true"
for (index =0 ; cblInterests.Items.Count; index++)
OnSelectedIndexChanged="Interest"
if (cblInterests.Items[index].selected)
Runat="server">
strMessage &= " " + cblInterests.Items[index].text;
<asp:ListItem Text="籃球" runat="server" />
<asp:ListItem Text="音樂" runat="server" />
lblMessage.text = strMessage;
<asp:ListItem Text="圍棋" runat="server" />
lblFirstInterest.text =
cblInterests.Items[cblInterests.SelectedIndex].text; <asp:ListItem Text="橋牌" runat="server" />
}
<asp:ListItem Text="麻將" runat="server" />
</script>
<asp:ListItem Text="電影" runat="server" />
</asp:CheckBoxList>
CheckBoxList
WebPage0310
你的興趣是:
<asp:Label id="lblMessage" runat="server"><br>
最前面的興趣是:
<asp:Label id="lblFirstInterest" runat="server" />
</form>
</body>
30
</html>
CheckBoxList
(a)
(b)
圖3.19 瀏覽WebPage0310.aspx
31
Internet Programming Ch.3
RadioButton、RadioButtonList (1/2)
<%@ Page Languag="C#" %>
<script runat="server">
void Report (object obj, EventArgs e)
{
string strMessage;
if (rbMale.Checked)
strMessage = "先生, 你";
else
strMessage = "小姐, 妳";
<html><body><form runat="server">
性別:
<asp:RadioButton id="rbMale"
GroupName="Sex" Text="男" Checked="True"
runat="server" />
<asp:RadioButton id="rbFemale" GroupName="Sex"
Text="女" runat="server" /><p>
年齡:
<asp:RadioButtonList id="rblAge"
switch (rblAge.SelectedIndex)
RepeatDirection="Horizontal"
{
case 0 :
runat="server"
strMessage += "不到20歲."; break;
OnSelectedIndexChanged="Report"
case 1 :
AutoPostBack="True">
strMessage += "在21到40歲之間."; break;
<asp:ListItem Text="小於20" runat="server" />
case 2 :
<asp:ListItem Text="21~40" Selected="True"
strMessage += "在41到60歲之間."; break;
runat="server" />
case 3 :
<asp:ListItem Text="41~60" runat="server" />
strMessage += "大於60歲."; break;
<asp:ListItem Text="61以上" runat="server" />
}
lblMessage.text = strMessage;
</asp:RadioButtonList>
}
<asp:Label ID="lblMessage" Runat="server" />
</script>
</form></body></html>
32
Internet Programming Ch.3
RadioButton、RadioButtonList (2/2)
圖3.21 瀏覽WebPage0311.aspx
圖3.22 點選圖中的選項後顯示之畫面
33
Internet Programming Ch.3
ListBox 、 DropDownList (1/2)
<%@ Page Language="C#" %>
<script runat="server">
void Report(object obj, EventArgs e)
{
int index;
if (obj is DropDownList )
lblDDLMessage.text = "你選了DropDownList中的" +
ddlBox.Items[ddlBox.SelectedIndex].text + ". ";
else{
lblLBMessage.text = "你選了ListBox中的";
for (index =0 ;index < lbBox.Items.Count ; index++)
if (lbBox.Items[index].selected)
lblLBMessage.text &= " " + lbBox.Items[index].text;
lblLBMessage.text += "." ;
}
}
</script>
34
Internet Programming Ch.3
ListBox 、 DropDownList (2/2)
<asp:ListBox id="lbBox"
SelectionMode="Multiple"
OnSelectedIndexChanged="Report"
AutoPostBack="True"
runat="server"
Rows="10">
<asp:ListItem Text="ITem 1" />
<asp:ListItem Text="ITem 2" />
<asp:ListItem Text="ITem 3" />
<asp:ListItem Text="ITem 4" />
<asp:ListItem Text="ITem 5" />
<asp:ListItem Text="ITem 6" />
<asp:ListItem Text="ITem 7" />
<asp:ListItem Text="ITem 8" />
<asp:ListItem Text="ITem 9" />
<asp:ListItem Text="ITem 10" />
<asp:ListItem Text="ITem 11" />
<asp:ListItem Text="ITem 12" />
</asp:ListBox>
<asp:Label ID="lblLBMessage" Runat="server" />
<html><body><form runat="server">
<asp:DropDownList ID="ddlBox"
OnSelectedIndexChanged="Report"
AutoPostBack="True"
Runat="server">
<asp:ListItem Text="ITem 1" />
<asp:ListItem Text="ITem 2" />
<asp:ListItem Text="ITem 3" />
<asp:ListItem Text="ITem 4" />
<asp:ListItem Text="ITem 5" />
<asp:ListItem Text="ITem 6" />
<asp:ListItem Text="ITem 7" />
<asp:ListItem Text="ITem 8" />
<asp:ListItem Text="ITem 9" />
<asp:ListItem Text="ITem 10" />
<asp:ListItem Text="ITem 11" />
<asp:ListItem Text="ITem 12" />
</asp:DropDownList>
35
Internet Programming Ch.3
Table、TableRow、TableCell
Properties (1/3)
Table 的 properties
BackImageUrl
表格背景圖案的URL。
CellPadding
表格內容與邊框的距離。
CellSpacing
表格內欄位與欄位間的距離。
GridLines
表格邊線是否顯示,有四種:Both、Horizontal、
Vertical和None,Both表示水平和垂直的邊線都顯示,
Horizontal 只顯示水平的邊線,Vertical 只顯示垂直
的邊線,None兩種邊線都不顯示。
HorizontalAlign
設定表格內容的對齊方式,有Left、Right、Center、
Justify、None五種方式。
Rows
此property用於程式碼區塊,以Rows(i)表示Table中第
i個橫行。
36
Internet Programming Ch.3
Table、TableRow、TableCell
Properties (1/3)
TableRow 的 properties
HorizontalAlign
設定橫行各欄位內容的水平對齊方式,有Left、
Right、Center、Justify、None五種方式。
VerticalAlign
設定橫行各欄位內容的垂直對齊方式,有Bottom、
Middle、Top、NotSet等。
Cells
此property用於程式碼區塊,以Cells(i)表示
Table中某橫行的第i個欄位。
Table、TableRow、TableCell
Properties (1/3)
TableCell 的 properties
ColumnSpan
合併儲存格時,行所包含的欄位數。
RowSpan
合併儲存格時,列所包含的欄位數。
Text
欄位的文字內容。
HorizontalAlign 設定欄位內容的水平對齊方式,種類同TableRow。
VerticalAlign
設定欄位內容的垂直對齊方式,種類同TableRow。
Wrap
一行打滿時,游標自動換行。
Table、TableRow、TableCell Properties (2/3)
<%@ Page Language ="C#" %>
<scr ipt runat="server">
void Report(object obj, EventArgs e)
TableRow NewRow = new TableRow();
TableCell NewCellZero = new TableCell();
TableCell NewCellOne = new TableCell();
NewCellZero.text = tbName.text;
NewCellOne.text = tbAge.text;
NewRow.Cells.Add(NewCellZero);
NewRow.Cells.Add(NewCellOne);
tbTable.Rows.Add(NewRow);
lblMessage.text = tbTable.Rows[Convert.ToInt16(txtIndex.Text)] .Cells[0].text + "的年齡是";
lblMessage.text = tbTable.Rows[Convert.ToInt16(txtIndex.Text)] .Cells[1].text + "歲." ;
end sub
</script>
<html><body><form runat="server">
<asp:Table id="tbTable" GridLines="Both" runat="server">
<asp:TableRow>
<asp:TableCell Text="姓名" />
<asp:TableCell Text="年齡" ID="tcName" />
</asp:TableRow>
<asp:TableRow>
39
Internet Programming Ch.3
Table、TableRow、TableCell Properties (3/3)
<asp:TableCell Text="Jordan" />
<asp:TableCell Text="38" ID="tcAge" />
</asp:TableRow>
<asp:TableRow>
<asp:TableCell Text="Bryant"/>
<asp:TableCell Text="24" />
</asp:TableRow>
<asp:TableRow>
<asp:TableCell Text="O'Neal" />
<asp:TableCell Text="30" />
</asp:TableRow>
</asp:Table>
新增資料:<br>姓名:
<asp:TextBox ID="tbName" Runat="server" /><p>
年齡:
<asp:TextBox ID="tbAge" Runat="server" /><p>
查詢第
<asp:TextBox ID="tbIndex" Width="20" Runat="server" />
位Player的資料<p>
<asp:Button ID="btnSubmit" OnClick="Report" Text="傳送" Runat="server" /><p>
<asp:Label ID="lblMessage" Runat="server" />
</form></body></html>
40
Internet Programming Ch.3
練習

以 <asp:table> 製作一個九九乘法表
練習:九宮格

以 <asp:table> 畫出九宮格
4
3
8

9
5
1
2
7
6
如何製作 5x5, 7x7, 9x9 或更大的?
BulletedList、Literal及HiddenField
Literal control 通常用來表示網頁中不會改變的文字,或稱常
數文數字
範例程式









<html>
<body>
<asp:Literal LiteralMode="Transform" Runat="server" >
Hello world!
<hr/><br/>
Welcome!
</asp:Literal>
</body>
</html>
43
Internet Programming Ch.3
BulletedList 特有的 Properties及
Event
名稱
說明
BulletImageUrl
選項標記圖案之網址,此屬性必須和
BulletStyle="CustomImage" 配合使用。
BulletStyle
選項標記之樣式,其值有:Circle、Disc、
Square、Numered、LowerAlpha、UpperAlpha、
LowerRoman、UpperRoman 和 CustomImage。
DisplayMode
選項內容呈現的樣式,其值有:Text、HyperLink
和LinkButton。
44
Internet Programming Ch.3
BulletedList 特有的 Properties及
Event
名稱
說明
FirstBulletNumber
當BulletStyle設定成Numered、
LowerRoman或UpperRoman時,選項標記的
所要呈現的起始數值,此數值須以整數表示。
Target
當DisplayMode="HyperLink"時,被瀏覽
的網頁所要成呈現的方式,其值有:_blank、
_parent、_search、_self和_top,見3.3
節之說明。
Click
當DisplayMode="LinkButton"或
"HyperLink"時,在點選選項時,會觸發
Click事件。此Click事件的
BulletListEventArgs參數中有一個index
屬性,index的值及為被點選的選項。
BulletedList (1/2)
void ShowClickedItem(object obj, BulletedListEventArgs e) {
Switch (e.Index){
Case 0 :
lblMessage.Text = "你點選了第一個選項.";
Case 1 :
lblMessage.Text = "你點選了第二個選項.";
Case 2 :
lblMessage.Text = "你點選了第三個選項.";
}
}
<asp:BulletedList id="btlItem"
BulletStyle="CustomImage"
BulletImageUrl="~/Book/WebPage0315.jpg"
DisplayMode="HyperLink"
OnClick="ShowClickedItem" runat="server">
<asp:ListItem Value="http://www.ncnu.edu.tw">國立暨南大學</asp:ListItem>
<asp:ListItem Value="http://www.nthu.edu.tw">國立清華大學</asp:ListItem>
<asp:ListItem>淡江大學</asp:ListItem>
</asp:BulletedList>
<asp:Label id="lblMessage" Font-Size="12" Width="168px" runat="server"/>
46
Internet Programming Ch.3
BulletedList (2/2)
(a)
(b)
圖3.29 瀏覽WebPage0314.aspx
47
Internet Programming Ch.3
Calendar、DayRender 、
SelectionChange

Calendar
control
2.
PrevMonth
1.
Title
3.
NextMonth
4.
SelectMonth
5.
SelectWeek
8.
OtherMonthDay
圖3.30 Calender control所顯示的月曆
9.
WeekendDay
48
6.
DayHeader
7.
Day
10.
Today
Internet Programming Ch.3
Calendar Control Properties (1/4)
名稱
說明
CellPadding
日曆表格中日期到該欄位邊框的距離。
CellSpacing
日曆表格中欄位與欄位間的距離。
DayHeaderStyle
設定日曆表格中第2行DayHeader的樣式。
DayHeaderstyle-BackColor、
DayHeaderstyle-BorderColor、…等,近
20種樣式。
DayNameFormat
設定星期名稱格式。
DayStyle
設定日期欄位的樣式。
FirstDayOfWeek
設定每一週的第1天是星期幾,例如
FirstDayOfWeek="Monday",則表示每一
週的第1天是星期一。
49
Calendar Control Properties (2/4)
名稱
說明
NextMonthText
改變下個月">"的替代文字,在修改此
property的同時,必須設定properties
NextPrevFormat="CustomText"和
ShowNextPrevMonth="true"。
NextPrevFormat
選擇上、下個月"<"和">"的顯現模式,有
ShortMonth、FullMonth和CustomText。
NextPrevStyle
設定上下個月的展現樣式。
OtherMonthDayStyle
設定非當月日期的展現樣式。
PrevMonthText
改變上個月"<"的替代文字。
SelectedDate
點選日、週、月的第一天。
SelectedDayStyle
設定點選定日、週、月的樣式。
Calendar Control Properties (3/4)
名稱
說明
SelectionMode
設定日、週、月是否要有按鈕,可能的值有
None、Day、DayWeek和DayWeekMonth。
SelectMonthText
設定月按鈕的文字內容。
SelectorStyle
設定月、週按鈕的樣式。
SelectWeekText
設定週按鈕的文字內容。
ShowDayHeader
是否要顯示DayHeadr。
ShowGridLines
是否要顯示邊框。
ShowNextPrevMonth
是否要有切換月份按鈕。
51
Calendar Control Properties (4/4)
名稱
說明
ShowTitle
是否要顯示Title。
TitleFormat
TitleFormat="MonthYear"表示Title要顯示
年和月, TitleFormat ="Month"表示Title只
顯示月。
TitleStyle
設定Title的樣式。
TodayDayStyle
設定今日的展現樣式。
TodaysDate
今天的日期,在runtime時使用之。
VisibleDate
目前日曆顯示月份的第一天,即某月1日。
WeekendDayStyle
設定星期六及星期日的展現樣式。
Calendar Control Events
名稱
說明
DayRender
每當日曆中產生一個日期的cell時觸發之。
SelectionChanged
當點選日曆中任何一個按鈕時觸發之,。
VisibleMonthChanged
當點選PrevMonth或NextMonth鈕時會被
觸發。
53
Internet Programming Ch.3
DayRender Events (1/4)


DayRender Event
 每當日曆中產生一個日期的 cell 時就會被觸發
 如果要對某個日期做特殊的設定,就經常會使用到這
個事件。
DayRenderEventArgs物件
 此事件對應副程式的 事件參數
 DayRenderEventArgs 物件中有兩個
properties:Cell 和 Day。
 Cell;一個TableCell物件,即為觸發此
DayRender事件的cell。
 Day ;一個CalendarDay物件,內含正要顯示在
日曆中的日期。
54
Internet Programming Ch.3
DayRender Events (2/4)
名稱
說明
Date
Date為DateTime物件,有Year、Month、Day等
properties。
DayNumberText
日期的文字。
IsOtherMonth
該日期是否為其他月份的日期。
IsSelectable
該日期是否可選,當SelectionMode="None"其值
為false。
IsSelected
該日期是否正被點選。
IsToday
該日期是否為今天。
IsWeekend
該日期是否為週末。
<html><body>
<form runat="server">
<asp:Calendar ShowGridLines="True"
DayRender Events (3/4)
BorderColor="black"
DayStyle-Height="40px"
CellSpacing="5"
DayHeaderStyle-BackColor="orange"
DayHeaderStyle-BorderColor="blue"
DayHeaderStyle-BorderStyle="Double "
DayHeaderStyle-BorderWidth="4"
DayHeaderStyle-ForeColor="green"
DayStyle-BackColor="lightblue"
DayStyle-BorderColor="orange"
DayStyle-BorderWidth="2"
DayStyle-ForeColor="green "
WeekendDayStyle-ForeColor="red "
extPrevFormat="CustomText"
NextMonthText="下個月"
PrevMonthText="上個月"
NextPrevStyle-BackColor="violet"
NextPrevStyle-ForeColor="indigo"
NextPrevStyle-BorderStyle="Groove"
OtherMonthDayStyle-BackColor="#cccc99"
TodayDayStyle-BackColor="#ff9999"
TitleStyle-BackColor="#669999"
<script language="C#" runat="server">
string[,] AllHolidays = new string[13, 32]
void Page_Load(obj as Object, e as EventArgs){
AllHolidays[1,1] = "元旦"
AllHolidays[2,11] = "除夕"
AllHolidays[2,12] = "春節"
AllHolidays[4,5] = "清明節"
AllHolidays[5,1] = "勞動節"
AllHolidays[6,15] = "端午節"
AllHolidays[9,21] = "中秋節"
AllHolidays[10,10] = "國慶日"
}
void Holidays(object obj, DayRenderEventArgs e) {
if (AllHolidays[ e.Day.Date.Month,
e.Day.Date.Day] != "")
e.Cell.Controls.Add(
new LiteralControl("<br><font size=1>"
+ AllHolidays[e.Day.Date.Month,
OnDayRender="Holidays" runat="server"/>
e.Day.Date.Day]
</form>
+ "</font>")) ;
</body></html>
}
}
</script>
56
Internet Programming Ch.3
DayRender Events (4/4)
圖3.33 瀏覽WebPage0317.aspx
設定節日的日期和各節日的名稱。
設定OnDayRender="Holidays",
表示當DayRender事件發生時要執
行副程式"Holidays"。
副程式"Holidays" 是判斷該日期
是否為設定的節
日,是則將該
節日名稱顯示在日期之下。
瀏覽WebPage0317.aspx的畫面,
可以發現2006年4月5日是清明節。
//e.Cell.Controls.Add( new LiteralControl …
57
Internet Programming Ch.3
SelectionChanged Event (1/2)


SelectionChanged Event 用來查詢或建立特定日期的行程。
DayRender Event 發生時,也可以將該日的行程自動顯示。
<script language="C#" runat="server">
void AnyActivity(object obj, EventArgs e){
Response.write(((calendar)obj).SelectedDate.ToShortDateString);
}
</script>
<html><body>
<form runat="server">
<asp:Calendar ShowGridLines="True" BorderColor="black" CellPadding="4"
CellSpacing="5" DayHeaderStyle-BackColor="orange"
…
…
SelectionMode="DayWeekMonth"
SelectMonthText="本月"
SelectWeekText="本週"
SelectorStyle-BackColor="#ccccff"
SelectedDayStyle-BackColor="purple"
OnSelectionChanged="AnyActivity"
runat="server" />
</form>
圖3.34 WebPage0318.aspx
</body></html>
58
SelectionChanged Event (2/2)


WebPage0318.aspx 和 WebPage0316.aspx類似,只是多加了副程式 "AnyActivity"(第2行到第4行) 以及 第21、
22行的
SelectedDayStyle-BackColor="purple"
OnSelectionChanged="AnyActivity"。
SelectedDayStyle-BackColor="purple"指當日、周、月按鈕被點選時,相關的日、周、月要變換成紫色
OnSelectionChanged="AnyActivity" 指SelectedChanged事件發時,要去執行副程式 "AnyActivity"
所謂SelectedChanged事件是指在日曆中點選不同按鈕時,此事件就會被觸發。
圖3.35 瀏覽WebPage0318.aspx
59
Internet Programming Ch.3
VisibleMonthChanged Event

VisibleMonthChanged Event




當月份改變時被觸發的事件,
即當點選 PrevMonth或 NextMonth按鈕時,會觸發此事件。
此事件的事件參數是MonthChangedEventArgs物件
MonthChangedEventArgs物件中兩個常用的 properties:


NewDate 新月份的第一天
PreviousDate 換月份之前記載的日期,

第一次的PreviousDate是今天,其後換月的PreviousDate則是舊月份的
第一天。
60
Internet Programming Ch.3
月曆文字的變化



在前面的例子中,我們都是採用中文來表達,
如果要製作他國語系的的Calendar,如何製作?
方法:調整Page directive中的 Culture參數
例如:製作韓文日曆的程式。
圖3.36 WebPage0319.aspx
<%@ Page Culture="ko-kr" %>
<html>
<body>
<form runat="server">
<asp:Calendar runat="server" />
</form>
</body>
</html>
Culture="ko-kr" 指示系統以韓文來編譯此網頁。
有關語系的編碼和國名的代碼設定,可切換到Design模式,調整Document的"Culture"欄位,
請見pp. 3-46的說明。
61
Internet Programming Ch.3
範例程式

Calendar Control 中的 ayNameFormat 是設定星期的名稱格式

此property 在中文環境設定中沒有意義,但在英文中有四種格式:




FirstLetter只顯示第1個英文字母
FirstTwoLetters只顯示前兩個英文字母
Short只顯示三個字母
Long顯示全名
圖3.39 WebPage0320.aspx
<%@ Page Culture="en-us" %>
<html>
<body>
<form runat="server">
<asp:Calendar
DayNameFormat="Short" runat="server" />
</form>
</body>
</html>
Culture="en-us"表示採用的語言是美國的英語。
62
Internet Programming Ch.3
範例程式:中文月曆星期的縮寫
圖3.41 WebPage0321.aspx
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="System.Threading" %>
<script language="C#" runat="server" >
void Page_Load(object obj, EventArgs e) {
string[] DayNames = {"日", "一", "二", "三", "四", "五", "六"};
CultureInfo myCulture = new CultureInfo("zh-TW");
myCulture.DateTimeFormat.AbbreviatedDayNames = DayNames;
Thread.CurrentThread.CurrentCulture = myCulture;
}
</script>
63
Internet Programming Ch.3
範例程式:民國紀元
圖3.43 WebPage0322.aspx
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="System.Threading" %>
<script language="C#" runat="server">
void Page_Load(object obj, EventArgs e) {
CultureInfo myCulture = new CultureInfo("zh-TW") ;
TaiwanCalendar myCalendar = new TaiwanCalendar();
myCulture.DateTimeFormat.Calendar = myCalendar ;
myCulture.DateTimeFormat.YearMonthPattern = "民國 yy年 MM月" ;
Thread.CurrentThread.CurrentCulture = myCulture ;
}
</script>
64
Internet Programming Ch.3
範例程式:刪除日期下面的橫線(鏈結)
圖3.45 WebPage0323.aspx
<%@ Import Namespace="System.Globalization" %>
<%@ Import Namespace="System.Threading" %>
<script language="C#" runat="server">
void Page_Load(object obj, EventArgs e) {
CultureInfo myCulture = new CultureInfo("zh-TW") ;
TaiwanCalendar myCalendar = new TaiwanCalendar();
myCulture.DateTimeFormat.Calendar = myCalendar ;
myCulture.DateTimeFormat.YearMonthPattern = "民國yy年MM月" ;
Thread.CurrentThread.CurrentCulture = myCulture ;
}
</script>
<html>
<head>
<style>A{TEXT-DECORATION:none}</style>
</head>
<body>
<form runat="server" ID="Form1">
<asp:Calendar runat="server" />
</form>
</body>
</html>
65
Internet Programming Ch.3
AdRotator Control (1/2)
AdRotator control製作廣告畫面的步驟:

1.
2.
3.
設計廣告的畫面,儲存成.jpg或.gif或.bmp等圖案檔。
製作 XML文件 描述廣告畫面呈現的方式。
利用AdRotator control將廣告呈現在螢幕上。
<?xml version="1.0" ?>
<Ad>
<Advertisements>
<ImageUrl>WebPage0327.gif</ImageUrl>
<Ad>
<NavigateUrl>http://dlm.ncnu.edu.tw/csie/
<ImageUrl>WebPage0325.gif</ImageUrl>
</NavigateUrl>
<NavigateUrl>http://www.ncnu.edu.tw/</NavigateUrl>
<Caption>資訊工程系</Caption>
<Caption>暨南國際大學</Caption>
<AlternateText>資工系</AlternateText>
<AlternateText>暨南國際大學</AlternateText>
<Keyword>科技</Keyword>
<Impressions>2 </Impressions>
<Impressions>1 </Impressions>
</Ad>
</Ad>
<Ad>
</Advertisements>
<ImageUrl>WebPage0326.jpg</ImageUrl>
<NavigateUrl>http://www.cst.ncnu.edu.tw/</NavigateUrl>
<Caption>科技學院</Caption>
<AlternateText>科技學院</AlternateText>
圖3.47 WebPage0324.xml
<Keyword>科技</Keyword>
<Impressions>1 </Impressions>
</Ad>
66
Internet Programming Ch.3
AdRotator Control (2/2)

以XML來描述的一個廣告



在XML文件中大小寫字母是不可以混用的,例如<Ad>不可寫成<ad>。
設計廣告時要用到的XML標籤有<Advertisements>、<Ad>、<ImageUrl>、
<Caption>、<AlternateText>、<Keyword>和<Impressions>,這些標籤是配
合AdRotator control所設計的,可視需要選擇要用的標籤。
<Advertisements>標籤是製作廣告的根標籤。







<Ad>和</Ad>標籤是用來描述一則廣告的內容。
<ImageUrl>標籤是用來描述廣告圖片的URL位址。
<NavigateUrl>標籤是用來描述當廣告圖片被點選時,所要瀏覽的URL位址。
<Caption>標籤是用來描述當找不到廣告圖片時,所要顯示的文字內容。
<AlternateText>標籤是用來描述當滑鼠移至廣告圖片時,所要顯示的文字內容。
<Keyword>標籤是用來歸類某種類型的廣告,
當AdRotator control 中有描述 KeywordFilter時,<Keyword>標籤的值和
KeywordFilter的值相同時,該類的廣告才有可能被顯示。
<Impressions>標籤是用來描述該則廣告出現的權重,
<Impressions>標籤的值越大,則該則廣告出現的機率就越高,例如圖3.47中三
則廣告出現的機率分別為2/4、1/4、1/4。
67
Internet Programming Ch.3
範例程式 (1/3)
<script language="C#" runat="server">
<html><body>
string kwSchool;
<asp:AdRotator ID="adNTUST"
void Page_Load(object obj, EventArgs e){
AdvertisementFile=
adNTUST.KeywordFilter =
"WebPage1601.xml"
(string) Session["kwSchool"];
Width="150px"
}
BorderColor="black"
void View(object obj, AdCreatedEventArgs e){
BorderWidth="2"
switch(e.AlternateText){
case "暨南國際大學" :
OnAdCreated="ViewText"
lblMessage.text = "暨南國際大學"
Runat="server" />
Session["kwSchool"]="科技" ;
<br>
break;
<asp:Label ID="lblMessage"
case "科技學院":
Runat="server" />
lblMessage.text = "科技學院網址:<br />"
</body></html>
+ e.AdProperties["NavigateUrl"];
break;
case "資訊工程系":
圖3.49 WebPage0329.aspx
lblMessage.Text = "暨大資工系";
break;
}
}
</script>
68
Internet Programming Ch.3
範例程式 (2/3)




在AdRotator control 中加了OnAdCreated="View",即當AdCreated事件發生時要
去執行副程式View。
副程式View的事件參數是AdCreatedEventArgs物件,根據AdCreatedEventArgs
物件的AlternateText得知是哪一則廣告被顯示,進而顯現不同的文字。
設定一個Session變數"kwSchool" ,其值為"科技"。
用意:見Page_Load副程式:將adNTUST.KeywordFilter 的值設定成Session變
數" kwSchool"的值。因此當第11行被執行過後,adNTUST.KeywordFilter 的值
就會被設定成"科技"。
其功能為,第一則廣告只會被顯示一次,以後就不再被顯示,而只會出現第
二則和第三則的廣告(含有Keyword="科技"),這兩則廣告出現的機率就各
為 1/2。因為在WebPage0324.xml中,第一則廣告並沒有設定<Keyword>標籤
的值,而第二則和第三則廣告<Keyword>標籤的值都是"科技"。
69
Internet Programming Ch.3
範例程式 (1/3)

這三則廣告的畫面
70
Internet Programming Ch.3
AdRotator Properties 和 Events
名稱
AdvertisementFile
AlternateTextField
Caption
說明
包含廣告內容的XML檔案名稱。
從資料庫的欄位內容取得AlternateText。
DataSource
當找不到要顯示的圖片時,所呈現的文字說明。
如果DataSource中不止一個tables或rowset時,可用DataMember
來指定特定的table或rowset。
要匯入AdRotator的資料來源,不可和AdvertisementFile同時使用。
DataSourceID
Data source control的ID。
ImageUrlField
資料表中儲存ImageUrl的欄位名稱。
Impressions
圖片出現的比重。
KeywordFilter
根據關鍵字過濾廣告畫面。在XML文件中keyword標籤的值和AdRotator control中
KeywordFilter的值相同的畫面才有可能被選取。
NavigateUrlField
資料表中儲存NavigateUrl的欄位名稱。
Target
顯示廣告的window,見5.2節之說明。
AdCreated
產生廣告 control時被觸發,事件的參數為AdCreatEventArgs物件,此物件包含的
properties有AdProperties(此廣告的properties)、AlternateText(圖片的替代文字) 、
ImageUrl(圖片的URL位址) 、NavigateUrl(點選圖片時的瀏覽位址)。
DataMember
71
Internet Programming Ch.3
FileUpLoad 常用Properties及
Methods
名稱
說明
FileBytes
將檔案的內容以位元組陣列的方式傳回。
FileContent
將檔案的內容以stream物件的方式傳回。
FileName
檔案的名稱(含路徑名稱)。
HasFile
是否有檔案,有則為true,否則為false。
PostedFile
取得上傳檔案的HttpPostedFile物件,此物件中常用的properties
有:ContentLength(檔案的長度)、ContentType(檔案的MIME
content type)和FileName(檔案的全名),還有SaveAs method用來
儲存檔案。
SaveAs
用來儲存檔案。
72
Internet Programming Ch.3
範例程式 (1/3)
<script language="C#" runat="server">
void UpLoadFile(object obj, EventArgs e)
{
int LastSlashPosition;
string PathName, FileName ;
PathName = myFile.FileName;
LastSlashPosition = PathName.LastIndexOf("\\");
FileName = PathName.Substring(LastSlashPosition + 1);
if (!(myFile.PostedFile == null)) {
try {
if (File.Exists( txtDirectoryName.Text + "\\" + FileName))
Response.Write("檔案已經存在");
else {
myFile.SaveAs(txtDirectoryName.Text +"\\" & FileName);
Response.Write("上傳成功");
}
}
catch (Exception ex)
lblMessage.Text = "無法上傳檔案," + ex.Message;
}
else
Response.Write("上傳失敗");
}
</script>
圖3.51 WebPage0330.aspx
73
Internet Programming Ch.3
範例程式 (2/3)
<html>
<body>
<form runat="server">
請輸入下列資料:<br />
Server的資料夾(路徑)名稱:
<asp:TextBox ID="txtDirectoryName" Runat="server" /><br />
上傳的檔案(路徑)名稱:
<asp:FileUpload id="myFile" runat="server" /><br />
<asp:Button ID="Submit" Runat="server" Text="開始上傳"
OnClick="UpLoadFile" />
<asp:Label ID="lblMessage" runat="server" />
</form>
</body>
</html>
74
Internet Programming Ch.3
範例程式 (3/3)
75
Internet Programming Ch.3
Wizard (1/4)

通常在安裝新系統或是展示系統的使用說明時,系統常會提供一個
Wizard(精靈),來幫忙說明安裝或使用步驟 。
圖3.55 拉中出一個Wizard control
圖3.56 加入一個Step
76
Internet Programming Ch.3
Wizard (2/4)
<asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="2">
<WizardSteps>
<asp:WizardStep runat="server" Title="Step 1">
這是第一步
</asp:WizardStep>
<asp:WizardStep runat="server" Title="Step 2">
這是第二步
</asp:WizardStep>
<asp:WizardStep runat="server" Title="Step 3">
這是最後一步
</asp:WizardStep>
</WizardSteps>
</asp:Wizard>
圖3.57 WebPage0331.aspx中Wizard control的組成
77
Internet Programming Ch.3
Wizard (3/4)
SideBar
SideBarButton
StepPreviousButton
FinishPreviousButton
Header
(a)
(b)
StartNextButton
StepNextButton
(c)
FinishCompleteButton
圖3.58 瀏覽WebPage0331.aspx
78
Internet Programming Ch.3
Wizard (4/4)

程式範例請參考課本圖3.59 WebPage0332.aspx
(a)
(b)
(c)
(d)
圖3.60 瀏覽WebPage0332.aspx
79
Internet Programming Ch.3
void Attention(object obj, EventArgs e) {
int idx ;
string strMessage;
for (idx=0; idx < pnlClassify.Controls.Count –1; idx++) {
if (pnlClassify.Controls[index] Is TextBox)
strMessage +=
( (TextBox)pnlClassify.Controls[idx] ).text ;
}
strMessage += "年級";
switch(TextBox2.Txt) {
case "1":
case "2":
lblJunior.text = strMessage;
pnlClassify.visible=false;
pnlJunior.visible=true;
pnlSenior.visible=false;break;
case "3":
case "4":
lblSenior.text = strMessage;
pnlClassify.visible=false;
pnlJunior.visible=false;
pnlSenior.visible=true;break;
default:
pnlClassify.visible=true;
pnlJunior.visible=false;
pnlSenior.visible=false;break;
}
}
</script>
80
Internet Programming Ch.3
Panel (1/3)
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object obj,EventArgs e){
If (!Page.IsPostBack){
pnlClassify.visible=true;
pnlJunior.visible=false;
pnlSenior.visible=false;
}
}
void YesSir(object obj, EventArgs e){
pnlClassify.visible=true;
pnlJunior.visible=false;
pnlSenior.visible=false
}
Panel (2/3)
<html><body><form runat="server">
<asp:Panel ID="pnlJunior" Runat="server">
<asp:Label ID="lblJunior" Runat="server" /><br>
<asp:Panel ID="pnlClassify" Runat="serve"r>
<asp:Label text="低年級注意事項" Runat="server" /><br>
<asp:Label text="姓名" Runat="server" />
<asp:Label text="1.早睡" Runat="server" /><br>
<asp:TextBox id="TextBox1"
<asp:Label text="2.早起" Runat="server" /><br>
Runat="server" /><br>
<asp:Label text="3.多讀書" Runat="server" /><br>
<asp:Label text="年級" Runat="server" />
<asp:Button Text="知道了"
<asp:TextBox id="TextBox2"
OnClick="YesSir" Runat="server" />
Runat="server" /><br>
</asp:Panel>
<asp:Button Text="傳送"
<asp:Panel ID="pnlSenior" Runat="server">
OnClick="Attention" Runat="server"/> <asp:Label ID="lblSenior" Runat="server" /><br>
</asp:Panel>
<asp:Label text="高年級注意事項" Runat="server" /><br>
<asp:Label text="1. 勿晚睡" Runat="server" /><br>
<asp:Label text="2. 勿晚起" Runat="server" /><br>
<asp:Label text="3.讀更多的書" Runat="server" /><br>
<asp:Button Text="知道了"
OnClick="YesSir" Runat="server" />
</asp:Panel>
</form></body></html>
81
Internet Programming Ch.3
Panel (3/3)
圖3.62 瀏覽WebPage0333.aspx
82
Internet Programming Ch.3
PlaceHolder
<%@ Page Language= "C#" AutoEventWireup="True" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e) {
Label myLabel = New Label();
TextBox myTextBox = New TextBox();
WebControl myNewLine = new WebControl(HtmlTextWriterTag.Br);
Button myButton = new Button();
myLabel.Text = "請輸入姓名: " ;
myPlaceHolder.Controls.Add(myLabel) ;
myPlaceHolder.Controls.Add(myTextBox) ;
myPlaceHolder.Controls.Add(myNewLine) ;
myButton.Text = "傳送" ;
myPlaceHolder.Controls.Add(myButton) ;
}
</script>
<html><body>
<form runat="server">
<h3>PlaceHolder Example</h3>
<asp:PlaceHolder id="myPlaceHolder" runat="server"/>
</form>
</body>
</html>
圖3.63 WebPage0334.aspx
圖3.64 瀏覽WebPage0334.aspx
83
Internet Programming Ch.3
MultiView、View (1/3)
<%@ Page Language="C#" AutoEventWireup="True" %>
<script runat="server">
void ViewChanged(Object obj, EventArgs e) {
View myView = myMulti.GetActiveView();
lblStatus.Text += "目前Active的view 是: " + myView.ID + "<br />";
}
</script>
<asp:MultiView ID="myMulti"
ActiveViewIndex="0"
OnActiveViewChanged="ViewChanged"
runat="server">
<asp:View ID="View1" runat="server">
<asp:Button ID="btnViewNext" Text="NextView" CommandName="NextView" runat="server" />
<asp:Button ID="btnSwitchViewByID" Text="SwitchViewByID" runat="server"
CommandName="SwitchViewByID" CommandArgument="View3" />
<asp:Button ID="Button2" Text="SwitchViewByIndex" runat="server"
CommandName="SwitchViewByIndex" CommandArgument="3" />
</asp:View>
</asp:MultiView>
圖3.65 WebPage0335.aspx
84
Internet Programming Ch.3
MultiView、View (2/3)
(a)
(b)
(c)
(d)
圖3.66 瀏覽WebPage0335.aspx
85
Internet Programming Ch.3
MultiView、View (3/3)

程式範例請參考課本圖3.67 WebPage0336.aspx
(a)
(b)
(c)
(d)
圖3.68 瀏覽WebPage0336.aspx
86
Internet Programming Ch.3
OutputCache Directive與Substitution Control (1/5)

OutputCache directive的語法如下:
<%
@OutputCache Duration = "資料存放在cache中的秒數"
Location = "cache buffer的存放位置"
VaryByParam = "根據參數決定cache是否要更新"
VaryByHeader = "根據headers決定cache是否要更新"
VaryByCustom = "根據browser決定cache是否要更新"
%>
87
Internet Programming Ch.3
OutputCache Directive與Substitution Control
(2/5)
<%@ Page Language="C#" %>
<%@ OutputCache Duration="20" VaryByParam="None" %>
<script runat="server">
void Page_Load(object obj, EventArgs e) {
lblMessage.text = "歡迎你的光臨,你到達的時間是" +
DateTime.Now.ToString("T") ;
}
</script>
<html><body>
<font size="5">下列時間被Output Cache 20秒</font>
<hr align="left" width="300">
<asp:Label ID="lblMessage" Runat="server" />
</body></html>
圖3.70 瀏覽WebPage0337.aspx
88
Internet Programming Ch.3
OutputCache Directive與Substitution Control
(3/5)
<%@ Page Language="C#" %>
<%@ OutputCache Duration="360" VaryByParam="None" %>
<script runat="server">
void Page_Load(object obj, EventArgs e) {
lblMessage.Text = (string)Request.Params["Name"]
+ "歡迎你的光臨,你到達的時間是"
+ DateTime.Now.ToString("T") ;
}
</script>
<html><body>
<font size="4">下列時間在輸入不變下被Output Cache 360秒
</font>
<hr align="left" width="300">
<asp:Label ID="lblMessage" Runat="server" />
</body></html>
圖3.71 WebPage0338.aspx
89
Internet Programming Ch.3
OutputCache Directive與Substitution Control
(4/5)
<%@ outputcache duration="60" varybyparam="none" %>
<script runat="server" language="C#">
void Page_Load(object sender, EventArgs e){
CachedDateLabel.Text = DateTime.Now.ToString() ;
}
static string GetCurrentDateTime(HttpContext context){
return "<font color='green'>" + DateTime.Now.ToString() +"</font>" ;
}
</script>
<html><body><form runat="server">
<h3>Substitution Class Example</h3>
<p>此部分不要cache:</p>
<asp:substitution id="Substitution1"
methodname="GetCurrentDateTime" runat="Server"/>
<br /><p>此部分要cache:</p>
<asp:label id="CachedDateLabel" ForeColor="blue" runat="Server" />
<br/><br/><asp:button id="RefreshButton" text="重新整理"
runat="Server" />
</form></body></html>
圖3.74 WebPage0339.aspx
90
Internet Programming Ch.3
OutputCache Directive與Substitution Control
(5/5)
(a)
(b)
圖3.75 瀏覽WebPage0339.aspx
91
Internet Programming Ch.3
Localize and Xml
Localize control
當設計網頁程式時,想顯示某些資料來檢視時,可利用
Localize control的Text屬性來顯示所要檢視的資料,
如程式中的變數值或是SQL statement等。
 Xml control
用來輔助瀏覽XML文件的control,
將在第十一章中介紹XML文件時,才介紹此control的用法。

92
Internet Programming Ch.3