LI NểI Ờ ĐẦU
P hn I: C CK THU TTO TRANG TI LI Uầ ÀỆ
2.4.3 Mụ hỡnh Web Form
Một Web Form bao gồm hai phần, cỏc thành phần nhỡn thấy được và mó lệnh. Cỏc thành phần cú thể được chứa trong cựng một trang; Tuy nhiờn, ta cú thể cỏc thành phần này thành hai trang riờng biệt. Cỏc thành phần nhỡnh thấy được cú thể được tạo trong cỏc file .aspx và hoạt động như một lớp chứa cỏc thành phần HTML và cỏc control Web Form. Mó lệnh thỡ được chứa ở một lớp file riờng biệt hay ngay trong file .aspx. Trong hầu hết cỏc trường hợp ta sẽ sử dụng chỳng theo cỏch thứ haị
2.4.4 Bộ khung Web Form là một mụ hỡnh đối tượng
Mặc dự ta tạo cỏc Web Form từ cỏc thành phần riờng rẽ, chỳng tạo nờn một khối thống nhất. Khi Web form được biờn dịch, ASP .NET phõn tớch trang và mó của chỳng, tạo ra một lớp mới, và sau đú biờn dịch mới lớp nàỵ Lớp tạo ra được bắt nguồn từ lớp ASP.NET Page, nhưng cú thờm cỏc thành phần mở rộng với cỏc control, mó lệnh, văn bản HTML tĩnh trong file .aspx.
Lớp trang mới này trở thành một file cú thể thi hành và được thi hành ở phớa server mỗi khi trang Web Form được yờu cầụ Trong khi thực thi, lớp Page xử lý cỏc yờu cầu gửi đến và phản hồi bằng cỏch tạo ra mó HTML một cỏch động và gửi nú tới browser. Nếu trang cú chứa cỏc control (thụng thường là như vậy) thỡ lớp Page hoạt động như một lớp chứa cỏc control và ỏnh xạ cỏc cỏc control được tạo tại thời điểm thực thi, cũng như vậy sinh ra cỏc mó HTML. Điều này hoàn toàn khỏc với ASP. Trong ASP, trang bao gồm mó HTML tĩnh đặt rải rỏc với mó thực thị Bộ xử lý của ASP đọc trang rỳt ra và chạy cỏc mó lệnh (thụng dịch hơn là biờn dịch) sau đú đặt kết quả trở lại mó HTML tĩnh trước khi gửi tới trỡnh duyệt.
Túm lại toàn bộ Web form, theo hiệu quả nào đấy, là một chương trỡnh đưa ra mó HTML. Mụ hỡnh xử lý giống như bất kỳ cỏc thành phần cú thể gọi nào trong trang được thi hành khi cú triệu gọị
Bởi vỡ file .aspx khụng phải là cỏc module theo kiểu truyền thống, mối quan hệ của nú với file lớp được thành lập với cỏc chỉ thị ở ở đầu trang. Đặc biệt là thuộc tớnh thừa kế trong chỉ thị @Page được sử dụng để chỉ định lớp file mà file .aspx cú nguồn gốc.
<%@ Page Inherits=”Project1.WebPage1” … %> 2.4.5 Quỏ trỡnh xử lý của trang Web form
Bộ khung Web form thực hiện rất nhiều dịch vụ cho ứng dụng Web của tạ vớ dụ bộ khung Web Form cú thể nắm bắt cỏc thụng tin cú liờn quan và là cho nú cú giỏ trị trong thuộc tớnh của cỏc đối tượng.
Để lập trỡnh Web Form một cỏch cú hiệu quả ta cần biết về cỏc sự kiện tuần tự xảy ra khi trang Web Form được xử lý.
Vũng đời của một trang Web Form Round trip
Một trong những điều quan trọng để hiểu được quỏ trỡnh xử lý trong trang Web Form là về sụ phõn chia hoạt động trong Web Form. Browser hiển thị Form tới ngơừi dựng và người dựng tương tỏc với form. Tuy nhiờn tất cả quỏ trỡnh xử lý mà cú sự tương tỏc với cỏc thành phần phớa server phải xảy ra trờn server. Điều này cú nghĩa là form phải được post lờn server, xử lý và trả về trỡnh duyệt. Sự tuần tự này được gọi là round trip.
Mặc dự ta cú thể tạo mụt số script hữu ớch ở phớa client trong trang Web Form như để kiểm tra dữ liệu nhập vào cho một số UI, nhưng cỏc script này khụng thể tương tỏc với cỏc thành phần ở phiỏ server.
Trong Web form, hầu hết cỏc hành động của người dựng như là click một button kết quả trả về trong một round trip. Vỡ lý do này cỏc sự kiện cú sẵn trong server control đều cú giới hạn. Hầu hết cỏc server control chỉ lộ ra sự kiện click, chỳng khụng đưa ra cỏc sự kiện xảy ra thường xuyờn như mouseonover vỡ mỗi lần sự kiện xảy ra nú cần một round trip để xử lý. Chỳng khụng đưa ra cỏc sự kiện xảy ra thường xuyờn như mouseonover, vỡ mỗi lần sự kiện xảy ra nú cần một round trip khỏc tới server, nú chiếm một thời gian đỏng kể.
Sự tạo lại trang
Trong bất kỳ kiểu xử lý Web nào, cỏc trang được tạo từ đầu trong mỗi round trip. Khi sevver kết thỳc quỏ trỡnh xử lý trang nú gửi tới browser và bỏ đi cỏc thụng tin về trang đú. Lần kế tiếp khi trang được post lờn server, server bắt đầu lại toàn bộ trang và xử lý.Vỡ vậy, Web pages thường được núi là sự phi trạng thỏi, giỏ trị cỏc biến trong trang và control khụng được bảo quản trờn server. Trong cỏc ứng dụng truyền thống, thụng tin mà server cú được là những thụng tin mà người dựng điền vào cỏc control, bởi vỡ thụng tin được gửi tới server khi post cỏc form. Cỏc thụng tin khỏc, như giỏ trị của biến hay cỏc thuộc tớnh thiết lập đều bị bỏ quạ
Bộ khung Web Form giải quyết cỏc giới hạn này theo một vài cỏch. đầu tiờn nú ghi lại trang thỏi và cỏc thuộc tớnh của control giữa cỏc round trip. Sau đú nú cung cấp cỏc tiện ớch quản lý trạng thỏi để trả lại cỏc thụng tin cụ thể trong ứng dụng (khụng chỉ là giỏ trị của cỏc control) giữa cỏc round trip hay khi qua lại giữa cỏc trang.
2.4.6 Cỏc chặng trong quỏ trỡnh xử lý Web Form
Trong quỏ trỡnh xử lý,Web form qua mỗi số chặng khỏc nhaụMỗi chặng bộ xử lý Web form gọi trang cú liờn quan xử lý cỏc phương thức và chạy mó lệnh trong phương thức đú.
Page_Init
Sau sự kiện này , trang được khởi tạọ Sự kiện này chịu trỏch nhiệm cho tất cả cỏc hoạt động khởi tạọ Nếu ta muốn khởi tạo cỏc giỏ trị một vài biến .. trước khi nạp trang, ta khai bỏo nú trong sự kiện Page_Init.
Page_load
Sự kiờn tự động chạy mỗi khi trang được nạp. nú xảy ra trước tiờn trong một yờu cầu trang sau khi cỏc control đó được khởi tạọ
Change events
Sau sự kiện Page_Load, là cỏc sự kiện của cỏc control đặc biệt. Vớ dụ như cỏc control cú sự kiện Change hay thậm chớ sự kiện click.
Mặc định, chỉ sự kiện click mới submit một form lờn server. Sự kiện Change được lưu lại trong hàng đợi chỉ được xử lý sau khi form được post lờn server bằng một sự kiện click.
Click event.
Tạo ra việc post form lờn server được xử lý sau khi tất cả sự kiện Change đó được xử lý.
Page_Unload
Là sự kiện cuối cựng trước khi trang bị huỷ bỏ, sự kện sảy ra khi người dung yờu cầu tới một trang khỏc. Ta khụng thể đọc cỏc giỏ trị của control trong phương thức của sự kiện này vỡ cỏc control khụng cũn tồn tại lõu nữạ Page_Unload rất hữu dụng cho cỏc hoạt động làm sạch như đúng lại cỏc file, đăng nhập, đúng lại CSDL, và huỷ cỏc đối tượng.
2.4.7 Mụ hỡnh sự kiện của Web Form
Sự kiện trong Web Form thường khỏc với cỏc sự kiện trong form client truyền thống hay cỏc ứng dụng web thuần client.
Trong cỏc ứng dụng thuần client, cỏc sự kiện phỏt sinh và được nắm bắt bởi clien. Trong Web Form hầu hết cỏc sự kiện phỏt sinh ở phớa client và được nắm bắt ở phớa server. Trong cỏc sự kiện phỏt sinh ở phớa client, mụ hỡnh sự kiện Web Form cần thụng tin được nắm bắt ở phớa client và thụng điệp về sự kiện được chuyển tới server. Vỡ cỏch làm việc của Web, thụng điệp này phải được post qua HTTP. Bộ khung Web Form phải thụng dịch thụng tin này để xỏc định sự kiện nào đó phỏt sinh, và sau đú gọi phương thức tương ứng trong mó lệnh để nắm bắt sự kiện.
Sự kiện Postback và Non_Postback
Trong cỏc control của Asp (khụng phải của HTML) mặc định chỉ sự kiện button_click() trong form xảy ra thỡ post thụng tin tới server. Sự kiện change trong control của ASP.NET được nắm bắt nhưng khụng post ngay lập tức. Thay vào đú chỳng được cache cho tới khi post xảy rạ Sau khi trang được xử lý trờn server tất cả cỏc sự kiện được xử lý lần lượt.
Trong khi trang được xử lý trờn server, tất cả cỏc sự kiện change được xử lý trước, sau đú sự kiện click gõy ra việc post form được thực hiện.
Ta cú thể đặt sự kiện change để cú thể post form ngay lập tức bằng thuộc tớnh Autopostback=”True” mà khụng cần đợi sự kiện click.
Phản hồi sự kiện tới cả Client và server trong HTML server control.
Cỏc server control trong ASP.NET chỉ cung cấp cỏc sự kiện ở phớa client. Tuy nhiờn cỏc sự kiện trong bộ HTML server control ( button và textbox) cho phộp ta tạo cỏc sự kiện cú thể được nắm bắt ở cả hai phớa client và server. Giống như cỏc sự kiện trong control của Asp.NET, sự kiện phớa server của cỏc control HTML thường bị giới hạn trong sự kiện đơn như click hay changẹ Cỏc sự cũn lại thường cho ta dựng trong client script.
2.4.8 Cỏc sự kiện Application và Session
Ngoài cỏc sự kiện trong trang và cỏc sự kiện trong cỏc control, bộ khung ASP.NET cũn cung cấp cỏc sự kiện ở mức độ cao hơn:
Application. Sự kiện ApplicationStart() xảy ra khi ứng dụng Web của ta lần đầu tiờn được bắt đầụ Điều này cho phộp ta khởi tạo cỏc nguồn tài nguyờn
được sử dụng trong suốt thời gian hoạt động của ứng dụng. Một sự kiện tương đương với nú, ApplicationEnd() hữu ớch để ta đúng lại cỏc tài nguyờn đó sử dụng.
Session. Cỏc sự kiện Session cũng giống như Application (SessionStart và SesstionEnd) nhưng phỏt sinh với mỗi session duy nhất trong ứng dụng. (Một session bắt đầu khi một người dựng yờu cầu đến một trang lần đầu tiờn trong ứng dụng của ta và kết thỳc khi ứng dụng của ta đúng phiờn kết nối hay khi cỏc phiờn kết nối hết thời hạn).
Để tạo phương thức sự kiện theo cỳ phỏp ASP.NET Trong cỏc thành phần server control, chỉ cần gắn một phương thức cho tờn một sự kiện:
<asp:Button id="Button1" runat="SERVER" OnClick="MyMethod" />
Sau đú tạo phương thức để nắm bắt sự kiện đú trong mó lệnh của tạ Phương thức cú dạng như sau:
[Visual Basic]
Private Sub methodname(ByVal sender As Object, ByVal e as
EventArgs) Vớ dụ: [C] <%@ Page Language="C" %> <%@ Import Namespace="System.Collections" %> <HTML> <HEAD> <SCRIPT RUNAT="SERVER">
protected void Button1_Click(object Source, EventArgs e){ Label1.Text="You clicked the button";
}
</SCRIPT> </HEAD> <BODY>
<FORM RUNAT=SERVER>
<asp:Button id=Button1 runat="server" Text="Button1"
onclick="Button1_Click" />
<asp:Label id=Label1 runat=server /> </FORM>
</BODY> </HTML>
Cỏc điều khiển phớa Server Giới thiệu về Server control.
Khi tạo một Web Form, ta cú thể sử dụng cỏc loại điều khiển sau:
HTML server control Cỏc thành phần HTML được mở rộng cho phớa server do đú ta cú thể lập trỡnh với chỳng, HTML server control này thất sự là cỏc đối tượng rất gần gũi với cỏc thành phần HTML mó chỳng đaị diện.
ASP.NET server control. Cỏc control này cú nhiều cỏc chức năng nội tại hơn HTML server control. ASP server contrl khụng chỉ gồm cỏc loại control trong form như button textbox chỳng cũn cú những control cú mục đớch đặc niệt như Calendar..
Control kiểm tra và nhập dữ liệụ Control này là một kiểu logic chặt chẽ cho phộp ta kiểm tra dữ liệu nhập vàọ Ban cú thể gắn nú với một control nhập dữ liệu để kiểm tra tớnh hợp lệ của dữ liệu nhập.
User control. Cỏc control mà ta tự tạo như cỏc trang Web form. Ta cú thể nhỳng cỏc user control trong cỏc trang Web Form khỏc, thật dễ dàng để tạo menu, thanh cụng cụ, hay cỏc thành phần cú thể sử dụng lại khỏc.
Ta cú thể sử dụng tất cả cỏc control này trong cựng một form. 2.4.9 HTML server control
HTML server control là cỏc thành phần HTML cú chứa cỏc thuộc tớnh cú thể hiển thị và lập trỡnh được trờn server. Theo mặc định cỏc thành phần HTML trong trang Web Form thường bị bỏ qua và được coi như cỏc đoạn văn bản bỡnh thường trờn server. Tuy nhiờn khi chuyển HTML sang HTML serverr control, ta cú thể mở rộng chỳng như là cỏc thành phần cú thể lập trỡnh được trờn server.
Mụ hỡnh đối tượng của HTML server control gần giống như cỏc thành phần HTML mà chỳng đại diện. Vớ dụ cỏc đặc trưng của HTML được mở rộng như là cỏc thuộc tớnh trong HTML server control.
Bất kỳ thành phần HTML nào trong trang cũng cú thể được chuyển thành HTML server control. Sự chuyển đổi này là một quỏ trỡnh đơn giản ta chỉ cần thờm thuộc tớnh RUNAT=SERVER thụng bỏo này sẽ cho server biết cần phải tạo một đối tượng cho thành phần này khi xử lý.
Nếu ta muốn tham chiếu một control trong mó lệnh ta cần phải gỏn thuộc tớnh ID cho control đú.
Cỏc đặc diểm của HTML server control
. Là một mụ hỡnh đối tượng mà ta cú thể lập trỡnh với nú trờn server theo cụng nghệ lập trỡnh hướng đối tượng. Mỗi server control mở rộng cỏc thuộc tớnh cho phộp ta thao tỏc với cỏc đặc trưng của HTML theo kiểu lập trỡnh.
. Một bộ cỏc sự kiện mà ta cú thể viết cỏc phương thức theo cỏch mà ta thường làm với cỏc control trong Window form chỉ khỏc là cỏc sự kiện này được nắm bắt ở phớa server.
. Khả năng nắm bắt sự kiện ở phớa client
. Tự động quản lý trang thỏi cho cỏc giỏ trị của control trong form. Nếu cú một round trip xảy ra tới server mà giỏ trị người dựng nhập vào trong HTML server control thỡ chỳng được lưu lại một cỏch tự động khi trang được gửu trở lại trỡnh duyệt.
Tương tỏc với cỏc control kiểm tra dữ liờu nhập (validation controls) do đú dễ dàng buộc người dựng diền cỏc thụng tin hợp lệ vào trong form.
. Ràng buộc dữ liệu với thuộc tớnh trong cỏc control khỏc . . Hỗ trợ kiểu HTML 4.0.
2.4.10 ASP.NET server control
ASP.NET server control là bộ control thứ hai được thiết kế với rất nhiều khỏc biệt. Chỳng khụng thể hiện giống hệt như cỏc HTML server control. Thay vào đú chỳng được định nghĩa như là cỏc control trừu tượng mà đại diện cho cỏc
thành phần HTML vỡ cỏc control này thật sự khỏc với mụ hỡnh để lập trỡnh. Vớ dụ RadioButtonList trong ASP.NET là một control nhưng nú lại gồm cỏc table trong mó HTML.
ASP.NET server control bao gồm cỏc control trong form truyền thống như button và textbox cỏc control phức tạp như tablẹ Chỳng cũng gồm cú cỏc control cung cấp cỏc chức năng thướng xuyờn sử dụng như là hiển thị dữ liệu trong lưới, chọn ngày thỏng..
Vớ dụ sau miờu tả làm thế nào để đưa vào trong trang .aspx một thành phần điều khiển:
<html> <body>
<h3><font face="Verdana">Declaring Server Controls</font></h3>
This sample demonstrates how to declare the <asp:label> server control and
manipulate its properties within a pagẹ <p>
<hr>
<asp:label id="Message1" font-size="16" font-bold="true" forecolor="red" runat=server>This is Message One</asp:label>
<br>
<asp:label id="Message2" font-size="20" font-italic="true" forecolor="blue" runat=server>This is Message Two</asp:label>
<br>
<asp:label id="Message3" font-size="24" font-
underline="true" forecolor="green" runat=server>This is Message Three</asp:label>
</body> </html>
Sau đõy là cỏc đặc điểm thờm vào trong cỏc control ASP.NET: Mụ hỡnh đối tượng phong phỳ cung cấp nhiều khả năng lập trỡnh.
Tự động xỏc định trỡnh duyệt. Cỏc control cú thể xỏc định trỡnh duyệt và tạo mó tương ứng cho trỡnh duyệt đú.
Một số control cú khả năng định dạng theo cỏch ta muốn thể hiện bằng cỏch sử dụng templates.
Một số control cú khả năng xỏc định cỏc sự kiện và ngay lập tức post lờn server hoặc là được cache và phỏt sinh khi form được đệ trỡnh.
Trong lỳc thiết kế ở dạng HTML, cỏc control xuất hiện trong trang cú dạng:
<asp:button attributes runat=”server”/>
Cỏc thuộc tớnh trong trường hợp này khụng giống như cỏc trong cỏc thành phần HTML, thay vào đú chỳng là cỏc thuộc tớnh của Web control.
Khi trang Web form chạy, cỏc web server control trong trang thường được thể hiện như cỏc thành phần HTML. Vớ dụ một textbox control thỡ giống như kiểu thẻ <INPUT> hay <TEXTAREA>.
Để thờm cỏc Control vào trang Web Form.
Việc thờm cỏc server control vào trang Web Form đơn giản như thờm cỏc thành phần HTML. Cỳ phỏp chớnh xỏc mà ta sử dụng phụ thuộc vào control mà ta thờm vào, nhưng thường thiết lập theo cỏch sau đõỵ
Cỏc control phải cú thuộc tớnh runat=”server”.
Đặt thuộc tớnh ID cho cỏc control trừ khi cỏc control đú là một phần của