Chu trình sống của một Web-Form

Một phần của tài liệu Ebook bài tập thực hành chuyên đề visual studio NET (Trang 137 - 140)

Khi có yêu cầu một trang Web trên máy chủ Web sẽ tạo ra một chuỗi các sự kiện ở máy chủ đó, từ lúc bắt đầu cho đến lúc kết thúc một yêu cầu sẽ hình thành một chu trình sống ( Life-Cycle ) cho trang Web và các thành phần thuộc nó. Khi một trang Web được yêu cầu, máy chủ sẽ tiến hành mở ( Load ) nó và khi hoàn tất yêu cầu máy chủ sẽ đóng trang này lại, kết xuất của yêu cầu này là một trang HTML tương ứng sẽ được gửi về cho trình duyệt. Dưới đây sẽ liệt kê một số sự kiện, ta có thể bắt các sự kiện để xử lý thích hợp hay bỏ qua để ASP.NET xử lý mặc định.

Khởi tạo (Initialize) Là sự kiện đầu tiên trong chu trình sống của trang, ta có thể khởi

bất kỳ các thông số cho trang hay các điều khiển thuộc trang.

Mở trạng thái vùng quan sát (Load View State) Được gọi khi thuộc tính

ViewState của điều khiển được công bố hay gọ. Các giá trị trong ViewState sẽ được

LoadViewState() hay lấy trực tiếp. Kết thúc (Dispose) Ta có thể dùng sự kiện này để giải phóng bất kỳ tài nguyên nguyên nào: bộ nhớ hay hủy bỏ các kết nối đến cơ sở dữ liệu.

Ví dụ: Hiển thị chuỗi lên trang

Đầu tiên ta cần chạy Visual Studio .NET, sau đó tạo một dự án mới kiểu WebApplication, ngôn ngữ chọn là C# và ứng dụng sẽ có tên là

ProgrammingCSharpWeb.Url mặc nhiên của ứng dụng sẽ có tên là http://localhost/ ProgrammingCSharpWeb. Visual Studio .NET sẽ đặt hầu hết các tập tin nó tạo ra cho

ứng dụng trong thư mụcWeb mặc định trên máy người dùng, ví dụ:

D:\Inetpub\wwwroot\ProgrammingCSharpWeb. Trong .NET, một giải pháp

(Solution) có một hay hiều dự án (Project), mỗi dự án sẽ tạo ra một thư viện liên kết động (DLL) hay tập tin thực thi (EXE). Để có thể chạy được ứng dụng Web Form, ta cần phải cài đặt IIS và FrontPage Server Extension trên máy tính.

Khi ứng dụng Web Form được tạo, .NET tạo sẵn một số tập tin và một trang Web có tên mặc định là WebForm1.aspx chỉ chứa mã HTML và WebForm1.cs chứa mã quản lý trang. Trang mã .cs không nằm trong cửa sổ Solution Explorer, để hiển thị nó ta chọn Project\Show All Files, ta chỉ cần nhấn đúp chuột trái trên trang Web là cửa sổ soạn thảo mã (Editor) sẽ hiện nên, cho phép ta viết mã quản lý trang. Để chuyển từ cửa số thiết kế kéo thả sang cửa sổ mã HTML của trang, ta chọn hai Tab ở góc bên trái phía dưới màn hình.

Đặt tên lại cho trang Web bằng cách nhấn chuột phải lên trang và chọn mục Rename

để đổi tên trang thành HelloWeb.aspx, .NET cũng sẽ tự động đổi tên trang mã của trang thành HelloWeb.cs. NET cũng tạo ra một số mã HTML cho trang:

.NET đã phát sinh ra một số mã ASP.NET: <%@ Page language="c#"

Codebehind="HelloWeb.cs" AutoEventWireup="false"

Inherits="ProgrammingCSharpWeb.WebForm1" %>

Thuộc tính language chỉ ra ngôn ngữ lập trình được dùng trong trang mã để quản lý trang, ở đây là C#. Codebehide xác định trang mã quản lý có tên HelloWeb.cs và thuộc tính Inherits chỉ trang Web được thừa kế từ lớp WebForm1 được viết trong

HelloWeb.cs:

public class WebForm1: System.Web.UI.Page

Ta thấy trang này được thừa kế từ lớp System.Web.UI.Page, lớp này do ASP.NET

cung cấp, xác định các thuộc tính, phương thức và các sự kiện chung cho các trang phía máy chủ. Mã HTML phát sinh định dạng thuộc tính của Form:

<form id="Form1" method="post" runat="server">

Thuộc tính id làm định danh cho Form, thuộc tính method có giá trị là “POST” nghĩa là Form sẽ được gởi lên máy chủ ngay lập tức khi nhận một sự kiện do người dùng phát ra ( như sự kiện nhấn nút ) và cờ IsPostBack trên máy chủ khi đó sẽ có giá trị là true. Biến cờ này có giá trị là false nếu Form được đệ trình với phương thức “GET” hay lần đầu tiên trang được gọi. Bất kỳ điều khiển nào hay Form có thuộc tính

runat=”server” thì điều khiển hay Form này sẽ được xử lý bởi ASP.NET Framework

trên máy chủ. Thuộc tính MS_POSITIONING =“GridLayout” trong thẻ <Body>, cho biết cách bố trí các điều khiển trên Form theodạng lưới, ngoài ra ta còn có thể bố trí các điều khiển trôi lổi trên trang, bằng cáchgán thuộc tính MS_POSITIONING thành “FlowLayout”.

Hiện giờ Form của ta là trống, để hiển thị một chuỗi gì đó lên màn hình, ta gõ dòng mã sau trong thẻ <body>:

Hello World! It is now <% = DateTime.Now.ToString( ) %>

Giống với ASP, phần nằm trong dấu <% %> được xem như là mã quản lý cho trang, ở đây là mã C#. Dấu = chỉ ra một giá trị nhận được từ một biến hay một đối tượng nào đó, ta cũng có thể viết mã trên lại như sau với cùng chức năng:

Hello World! It is now

<% Response.Write(DateTime.Now.ToString( )); %>

Thực thi trang này ( Ctrl-F5 ), kết quả sẽ hiện trên trình duyệt như sau:

Để thêm các điều khiển cho trang, hoặc là ta có thể viết mã trong của sổ HTML hoặc là kéo thả các điều khiển trên bộ công của Web Form vào cửa sổ thiết kế trang. ASP.NET sẽ tự động phát sinh ra kết quả từ mã HTML thành các điều khiển cũng như từ các điều khiển trên trang thiết thành mã HTML tương ứng. Ví dụ, kéo hai RadioButton vào trang và gán cùng một giá trị nào đó cho thuộc tính GroupName của cả hai điều khiển, thuộc tính này sẽ làm cho các nút chọn loại trừ lẫn nhau. Mã HTML của trang trong thẻ <Form> do ASP.NET phát sinh sẽ như sau:

Các điều khiển của ASP.NET, có thêm chữ “asp:” phía trước tên của điều khiển đó, được thiết kế mang tính hướng đối tượng nhiều hơn.

<asp:RadioButton> <asp:CheckBox> <asp:Button>

<asp:TextBox rows="1"> <asp:TextBox rows="5">

Ngoài các điều khiển của ASP.NET, các điều khiển HTML chuẩn cũng được ASP.NET hỗ trợ. Tuy nhiên các điều khiển không tạo sự dễ đọc trong mã nguồn do tính đối tượng trên chúng không rõ ràng, các điều khiển HTML chuẩn ứng với năm điều khiển trên là:

<input type = "radio"> <input type="checkbox"> <input type="button"> <input type="text"> <textarea>

Một phần của tài liệu Ebook bài tập thực hành chuyên đề visual studio NET (Trang 137 - 140)

w