800 likes | 987 Views
Ch06 建立 WEB 表單. 網頁程 式設計. 大綱. 本章內容包含課本 6-1, 6-2 及第 7 章 Web 表單 Web 控制項的基礎 資料輸入輸出控制項 選擇控制項 清單控制項 按鈕控制項. 網頁表單的用途. ASP.NET 程式是伺服端網頁技術,換句話說,客戶端網頁只負責取得使用者輸入的資料,資料都是送到伺服端來進行處理。網頁表單就是 ASP.NET 程式的資料輸入介面,如同 Windows 對話方塊,它是使用者與後端程式的溝通橋樑,如下圖所示:. 伺服端控制項的 Web 表單處理.
E N D
Ch06 建立WEB表單 網頁程式設計
大綱 本章內容包含課本6-1, 6-2及第7章 • Web表單 • Web控制項的基礎 • 資料輸入輸出控制項 • 選擇控制項 • 清單控制項 • 按鈕控制項
網頁表單的用途 • ASP.NET程式是伺服端網頁技術,換句話說,客戶端網頁只負責取得使用者輸入的資料,資料都是送到伺服端來進行處理。網頁表單就是ASP.NET程式的資料輸入介面,如同Windows對話方塊,它是使用者與後端程式的溝通橋樑,如下圖所示:
伺服端控制項的Web表單處理 • ASP.NET的Web表單是結合HTML/XHTML、程式碼和伺服端控制項,一種完全在Web伺服器執行的表單,如下圖所示:
Web表單的程式架構-說明 • ASP.NET的Web表單可以建立跨平台和跨瀏覽程式Web應用程式的輸入介面,其使用的技術如同在VB、JBuilder等視覺化開發工具建立Windows應用程式的「GUI」(Graphics UserInterface)介面。 • Web表單程式架構是一種事件驅動程式設計模型(Event-driven Programming Model),它是使用伺服端控制項建立Web表單的使用介面。當產生事件時,ASP.NET程式以對應的事件處理程序來處理事件。
Web表單的程式架構-架構1 <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Button1_Click(ByVal sender As _ Object, ByVal e As System.EventArgs) Label1.Text = "按下Button控制項<br/>" End Sub </script>
Web表單的程式架構-架構2 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>未命名頁面</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div> </form> </body> </html>
Web表單的程式架構-架構說明 • 第一部分:<script>標籤的事件處理程序或函數,以此例是Button1_Click()事件處理程序。 • 第二部分:<form Runat="server">標籤建立Web表單,內含Form表單標籤和伺服端控制項(Server Controls),以此例擁有Label和Button控制項。
Head標頭標籤 • 在ASP.NET 2.0版的<head>標籤,可以改為<head Runat="server">的HtmlHead控制項物件,如下所示: <head Runat="server"> …… </head> • 上述Head標頭標籤可以建立HtmlHead物件。ASP.NET程式可以指定HtmlTitle物件的標題文字(即<title>標籤),如下所示: Sub Page_Load(Sender As Object, _ E As Eventargs) Page.Header.Title = "Ch6-2-1.aspx" End Sub
Form表單標籤-說明 • Web表單的伺服端控制項是置於<form Runat="server">的HTML控制項之間,它就是HtmlForm控制項物件,如下所示: <form Runat="server"> ……… </form> • 上述Web表單和HTML/XHTML表單差異只在Runat屬性,此屬性將HTML/XHTML表單轉換成ASP.NET的Web表單。
Form表單標籤-屬性 • Id屬性:Web表單的識別名稱。 • Method屬性:控制項值的送出方式,值只能是post或get,其預設是post方法。 • Action屬性:指定Web表單處理的ASP.NET程式,預設是自已,如果是其他ASP.NET程式,其值是程式的URL網址。
伺服端控制項-說明 • Web表單是由伺服端控制項(Server Controls)組成,它是一種伺服端可程式化物件。 • ASP.NET程式可以使用HTML或Web控制項來建立表單使用介面。
伺服端控制項-HTML控制項(說明) • HTML控制項是.NET Framework物件,這些控制項都擁有對應的HTML/XHTML標籤,如下所示: <input type="TEXT" Id="Name" size ="20" Runat="server"> • 上述標籤和HTML/XHTML標籤並沒有什麼不同,其差異只在新增Runat和Id兩個屬性。
伺服端控制項-Web控制項(說明) • Web控制項是一組和HTML/XHTML標籤完全無關的控制項,其語法是使用XML標籤寫法,如下所示: <asp:TextBox Id="name" Width="200px" Runat="server"/> • 上述Web控制項是使用asp字頭的XML標籤,在「:」符號後是控制項種類,以此例是TextBox控制項,Id屬性為控制項名稱,同樣需要Runat屬性值server,指明是位在伺服端處理。
Page物件與控制項的事件-說明 • 當在瀏覽程式載入ASP.NET程式,或使用者在Web表單按下或選擇控制項等操作時,就會造成控制項的狀態改變,進而觸發事件;當事件產生時,可以建立事件處理程序來處理此事件。
Page物件與控制項的事件-控制項事件 • 在Web表單的伺服端控制項都提供有相關事件。例如:按一下Button控制項button1時,就會觸發Click事件,其事件處理程序,如下所示: Protected Sub Button1_Click(ByVal sender As _ Object, ByVal e As System.EventArgs) Label1.Text = "按下Button控制項<br/>" End Sub
Page物件與控制項的事件-Page物件的事件 • 當伺服端執行和編譯ASP.NET程式,每一頁ASP.NET程式的網頁就是一個Page物件,它會觸發一系列Page物件的事件。Page物件的常用事件,如下表所示:
Web控制項的基礎-說明 • Web控制項是一組比HTML控制項功能更強大的控制項,不僅可以建立Web表單,它還包括資料顯示的相關控制項,其語法是使用XML標籤的寫法,如下所示: <asp:TextBox id="name" Width="200px" runat="Server"/> • Web控制項使用asp字頭的XML標籤,「:」符號後是控制項種類,以此例是TextBox控制項,id屬性為控制項名稱,同樣需要runat屬性值Server,指明是位在伺服端處理。
HTML控制項 <input type=“TEXT” id=“Name” runat=“Server”> WEB <asp:TextBox id=“Name” runat=“Server”/> HTML控制項與WEB控制項的對照
Label標籤控制項-說明 • Label標籤控制項的目的是在網頁顯示文字內容,它會轉換成HTML的<span>標籤,一個Label標籤控制項的範例,如下所示: <asp:Label id="Name" Width="200px" BorderStyle="solid" BorderColor="#ccccff" runat="Server"/>
範例1 • <!-- 程式範例:Ch06_01.aspx --> • <%@ Page Language="VB" %> • <html> • <head> • <title>Label標籤控制項</title> • <script language="VB" runat="Server"> • Sub Page_Load(Sender As Object, e As Eventargs) • Name.Text = "ASP.NET網頁設計範例教本" • End Sub • </script> • </head> • <body> • <h2>Label標籤控制項</h2> • <hr> • <asp:Label id="Name" Width="200px" BorderStyle="solid" • BorderColor="#ccccff" runat="Server"/> • </body> • </html>
資料輸入控制項-建立 • Web資料輸入控制項就是TextBox控制項,相當於HTML/XHTML表單標籤或控制項的文字方塊、密碼欄位和文字區域。 • 在VWD設計檢視建立的Web表單,如下圖所示:
資料輸入控制項-標籤 • TextBox控制項標籤,如下所示: <asp:TextBox Id="name" Width="200px" Runat="server"/><br/> <asp:TextBox Id="pass" Width="200px" TextMode="Password" Runat="server"/><br/> <asp:TextBox Id="address" Width="200px" TextMode="Multiline" Rows="3" Runat="server"/> • 上述標籤建立3個TextBox控制項,TextMode屬性指定欄位種類為密碼欄位(Password)或文字區域(Multiline)。
資料輸入控制項-存取欄位值 • 在ASP.NET程式取得TextBox控制項的欄位值,就是使用Text屬性,如下所示: name.Text pass.Text address.Text
<script language="VB" runat="Server"> Sub button_Click(Sender As Object, e As Eventargs) ' 顯示欄位值 msg.Text = "姓名: " & name.Text & “<br/>” msg.Text &= "密碼: " & pass.Text & “<br/>” msg.Text &= "地址: " & address.Text & “<br/>” End Sub <form runat="Server"> 姓名: <asp:TextBox id="name" Width="200px" runat="Server"/><br/> 密碼: <asp:TextBox id="pass" Width="200px" TextMode="Password" runat="Server"/><br/> 地址: <asp:TextBox id="address" Width="200px" TextMode="Multiline" Rows="3" runat="Server"/> <asp:Button id="Button" Text="送出" OnClick="button_Click" Runat="Server"/> </form> <asp:Label id=“msg" ForeColor=“red” runat="Server"/> 範例2
練習1 • 修改範例2的程式,使得按下〔送出〕的按鈕時,會判斷輸入密碼是不是123 ,不對時,會出現錯誤訊息
Web表單的顯示狀態-說明 • ASP.NET的「顯示狀態」(ViewState)可以保留伺服端控制項的狀態,也就是每次執行HTTP請求時,保留使用者輸入的值。 • 例如:在Web表單TextBox控制項輸入值,不論表單送回多少次,除非更改控制項的值,顯示狀態都能夠自動保留欄位值。
Web表單的顯示狀態 • ASP.NET顯示狀態是使用隱藏欄位儲存狀態資料,如下圖所示:
Web表單的顯示狀態 • 請在瀏覽程式執行「檢視」→「原始檔」指令檢視原始程式碼,可以在表單標籤<form>看到<input type="hidden">標籤的隱藏欄位,如下圖所示:
CheckBox核取方塊控制項-建立 • CheckBox核取方塊控制項是一個複選題,可以建立一組切換開關。在VWD設計檢視建立的Web表單,從左至右依序是3個CheckBox控制項,可以用來勾選多個選項,預設勾選使用電話,如下圖所示:
CheckBox核取方塊控制項-標籤 • CheckBox控制項標籤,如下所示: <asp:CheckBox Id="Tel" Text="使用電話" Checked="True" Runat="server"/> <asp:CheckBox Id="Email" Text="使用電子郵件" Runat="server"/> <asp:CheckBox Id="Fax" Text="使用傳真" Runat="server"/> • 上述標籤建立名為Tel、Email和Fax的3個CheckBox控制項。
CheckBox核取方塊控制項-存取欄位值 • 在ASP.NET程式是使用If條件敘述來檢查Checked屬性,以便知道是否有勾選核取方塊,如下所示: If Tel.Checked Then str &= "使用電話來確認<br/>" End If
Sub Page_Load(Sender As Object, e As Eventargs) Tel.Checked = True End Sub Sub button_Click(Sender As Object, e As Eventargs) Dim str As String = "確認方式: " If Tel.Checked Then str &= "使用電話來確認<br>" End If If Email.Checked Then str &= "使用電子郵件來確認<br>" End If If Fax.Checked Then str &= "使用傳真來確認<br>" End If msg.Text = str End Sub <form runat="Server"> <b>訂單確認的方式</b><br> <asp:CheckBox id="Tel" Text="使用電話" runat="Server"/> <asp:CheckBox id="Email" Text="使用電子郵件" runat="Server"/> <asp:CheckBox id="Fax" Text="使用傳真" runat="Server"/><br/> <asp:button id="Button" Text="送出" OnClick="button_Click" runat="Server"/><br/> </form> <asp:Label id=“msg" font-size="10pt" ForeColor=“red” runat="Server"/> 範例3
RadioButton選擇鈕控制項-建立 • RadioButton選擇鈕控制項是一個單選題,提供一組選項,只能選擇其中之一。在VWD設計檢視建立的Web表單,從左至右依序是3個RadioButton控制項,這是一組選項,可以用來選擇付款方式,預選信用卡,如下圖所示:
RadioButton選擇鈕控制項-標籤 • RadioButton控制項標籤,如下所示: <asp:RadioButton Id="Card" Text="信用卡“ Checked="True" GroupName="Payment“ Runat="server"/> <asp:RadioButton Id="Tele" Text="劃撥" GroupName="Payment“ Runat="server"/> <asp:RadioButton Id="Cash" Text="到貨付款" GroupName="Payment" Runat="server"/> • 上述標籤的GroupName屬性值都是Payment,表示是一組RadioButton控制項。
RadioButton選擇鈕控制項-存取欄位值 • 在ASP.NET程式是使用If ElseIf多條件敘述來檢查Checked屬性,以便知道使用者是否選取指定選擇鈕,如下所示: If Card.Checked Then msg.Text = Card.Text & "<br/>" Else If Tele.Checked Then msg.Text = Tele.Text & "<br/>" Else If Cash.Checked Then msg.Text = Cash.Text & "<br/>" End If
Sub Page_Load(Sender As Object, e As Eventargs) Card.Checked = True End Sub Sub button_Click(Sender As Object, e As Eventargs) If Card.Checked Then msg.Text = Card.Text & "<br/>" Else If Tele.Checked Then msg.Text = Tele.Text & "<br/>" Else If Cash.Checked Then msg.Text = Cash.Text & "<br/>" End If End Sub <form runat="Server"> <b>訂單的付款方式</b><br/> <asp:RadioButton id="Card" Text="信用卡" Checked="True" GroupName="Payment" runat="server"/> <asp:RadioButton id="Tele" Text="劃撥" GroupName="Payment" runat="server"/> <asp:RadioButton id="Cash" Text="到貨付款" GroupName="Payment" runat="server"/><br> <asp:button id="Button" Text="送出" OnClick="button_Click" runat="Server"/><br/> </form> <asp:Label id=“msg" font-bold="true" foreColor=“red” runat="Server"/> 範例4
清單控制項 • DropDownList下拉式選單控制項 • ListBox清單方塊控制項 • CheckBoxList核取方塊清單控制項 • RadioButtonList選擇鈕清單控制項
清單控制項-屬性 • Web控制項有四種清單選擇功能的控制項:DropDownList、ListBox、CheckBoxList和RadioButtonList控制項。控制項都支援的屬性,如下表所示:
清單控制項-在VWD新增清單的ListItem控制項1 • 在VWD的【設計】標籤新增DropDownList、ListBox、CheckBoxList和RadioButtonList控制項後,都是顯示未繫結和沒有選項的控制項,即沒有項目ListItem控制項,如下圖所示:
清單控制項-在VWD新增清單的ListItem控制項2 • 請選取清單控制項,按一下上方箭頭圖示顯示「DropDownList工作」功能表,然後請按一下【編輯項目】超連結來新增ListItem控制項的項目,可以看到「ListItem集合編輯器」視窗。
清單控制項-在VWD新增清單的ListItem控制項3 • 請重複按【加入】鈕,即可新增清單所需的ListItem控制項,一個選項是一個ListItem控制項。其相關屬性說明,如下表所示:
DropDownList下拉式選單控制項-建立 • DropDownList下拉式選單控制項是一個單選題,相當於單選HTML/XHTML標籤<select>的下拉式選單。在VWD設計檢視建立的Web表單,如下圖所示: