LI NểI Ờ ĐẦU
P hn I: C CK THU TTO TRANG TI LI Uầ ÀỆ
2.4 ASP.NET WEB FORM
2.4.1. giới thiệu về ASP.NET Web form
Web form là một cụng nghệ lập trỡnh trong ASP.NET cho phộp ta tạo ra cỏc trang web cú thể lập trỡnh được. Chỳng biểu diễn thụng tin bằng việc sử dụng bất kỳ ngụn ngữ đỏnh dấu nào và sử dụng cỏc mó lệnh phớa server để thực hiện cỏc thành phần phớa server.Web form:
. Cú thể chạy trờn bất cứ browser nào và tự động dịch một cỏch chớnh xỏc, browser – tuõn thủ theo mó HTML cho một số chức năng như styles, layout..
. Cú thể lập trỡnh bằng bất cứ ngụn ngữ thực thi (CLR) nào, bao gồm Visual Basic, C# và Jscript .NET.
. Do xõy dựng trờn CLR và được cung cấp tất cả cỏc lợi ớch từ cụng nghệ này, bao gồm một mụi trường thi hành được quản lý, kiểu an toàn, tớnh thừa kế và sự biờn dịch động.
. Hỗ trợ cỏc cụng cụ biờn tập kiểu WYSIWYG và cỏc cụng cụ phỏt triển RAD mạnh mẽ như Microsoft Visual Studio .NET, cho việc thiết kế và lập trỡnh cỏc form.
. Cung cấp một bộ cụng cụ đa năng cho phộp cỏc nhà phỏt triển gúi gọn logic trang vào trong cỏc thành phần cú thể sử dụng lại và nắm bắt cỏc sự kiện trong trang một cỏch rừ ràng.
Cho phộp phõn cỏch giữa mó và nội dung trong một trang, loại trừ cỏc mó “spaghetti-code” thường gặp trong cỏc trang ASP.
. Cung cấp một bộ cỏc chức năng quản lý trạng thỏi để bảo vệ trạng thỏi nhỡn thấy được trong trang giữa cỏc lần truy vấn.
. Cú thể mở rộng với cỏc control mà người dựng tự tạo hay do cỏc nhà cung cấp thứ bạ
Web form phõn chia giao diện người dựng của cỏc ứng dụng web thành hai phần: thành phần trực quan và giao diện logic người dựng. Nếu trước đõy ta đó từng sử dụng với cỏc cụng cụ phỏt triển nhanh như Microsoft Visual Basic. Microsoft C++, ta sẽ nhận thấy sự khỏc biệt giữa cỏc thành phần của form và phần mó lệnh tương tỏc với form.
Giao diện người dựng cho cỏc trang Web Form bao gồm một file chứa cỏc thành phần đỏnh dấu và cỏc thành phần Web form đặc biệt. File này thường được hiểu như là “trang”.Trang này làm việc như là một lớp chứa văn bản và cỏc control mà ta muốn hiển thị. Ta cú thể sử dụng bất kỳ trỡnh biờn tập HTML nào cú thờm cỏc Web form server control để đặt lờn form. Trang là một file cú phần mở rộng “.aspx”.
Giao diện logic người dựng cho Web form bao gồm mó lệnh mà ta tạo để tương tỏc với form. Ta cú thể lựa chọn logic lập trỡnh được chứa bờn trong file .aspx, hoặc trong một file riờng biệt ( thường được gọi là file mó ẩn- code
behind), được viết bằng VB, C#. khi ta chạy form, file lớp mó ẩn sẽ chạy kết quả đưa ra trang một cỏch động.
Việc lập trỡnh cỏc ứng dụng Web đối mặt với nhiều thử thỏch nảy sinh khụng giống như khi lập với cỏc ứng dụng client truyền thống. Trong số cỏc thử thỏch này là:
. Giao diện người dựng phong phỳ. Một giao diện người dựng với một số lượng lớn nội dung, một cỏch bài trớ phức tạp, sự tương tỏc người dựng đẹp mắt cú thể gõy khú khăn và nhàm chỏn khi tạo và lập trỡnh nếu sử dụng cỏc tiện ớch HTML. Và trở nờn đặc biệt khú khi tạo một giao diện người dựng cho cỏc ứng dụng cú thể chạy trờn nhiều trỡnh duyệt khỏc nhaụ
.Sự phõn chia giữa client và server. Trong một ứng dụng web, client (Browser) và server là cỏc chương trỡnh khỏc nhau thường chạy trờn cỏc mỏy tớnh khỏc nhau (thậm chớ hệ điều hành khỏc nhau). Do đú hai phần của một ứng
dụng chia xẻ rất thụng tin; chỳng cú thể giao tiếp, nhưng thụng thường chỉ trao đổi cỏc thụng tin đơn giản.
. Sự thi hành phi trạng thỏị Khi một Web server nhận một truy vấn cho một trang, nú tỡm trang, xử lý chỳng, gửi nú tới browser và sau đú khụng cũn lưu trữ thụng tin gỡ về trang đú. Nếu người dựng truy vấn đến cựng một đú, server lặp lại toàn quỏ trỡnh xử lý từ đầu, hay núi một cỏch khỏc cỏc server khụng nhớ gỡ về trang mà chỳng đó xử lý. Do đú, nếu một ứng dụng cần duy trỡ thụng tin về một trang, việc này trở thành một vấn đề phải được xử lý trờn mó ứng dụng.
. Khụng biết gỡ về khả năng của client. Trong một số trường hợp cỏc ứng dụng web được tiếp cận bởi nhiều người dựng với nhiều trỡnh duyệt khỏc nhau, làm khú khăn khi hơn khi tạo ra một ứng dụng một cỏch bỡnh thường với tất cả chỳng.
. Truy xuất dữ liệụ Đọc và ghi vào nguồn dữ liệu trong cỏc ứng dụng web truyền thống thường rất phức tạp và tập trung nhiều cụng sức.
Đối mặt với cỏc thử thỏch này một ứng dụng web cần nhiều thời gian và nỗ lực. Web form là giải phỏp để giải quyết cỏc vấn đề nàỵ
. Độc lập với mọi trỡnh duyệt. Tạo mó rừ ràng cho cỏc trỡnh duyệt khỏc nhaụ Tuy nhiờn, nú vẫn cho phộp cú được cỏc lợi ớch của cỏc chức năng đặc biệt trong trỡnh duyệt một cỏch tự động để cải thiện việc trỡnh bàỵ
. Mụ hỡnh lập trỡnh sự kiện. Web form mang đến cỏc ứng dụng Web một mụ hỡnh để viết cỏc phương thức cho cỏc sự kiện xảy ra ở phớa server cung như ở client, chuyển giao nú tới server, và việc gọi hander thớch đỏng là hoàn toàn tự động và trong suốt. Kết quả là cấu trỳc mó lệnh thật đơn giản và rừ ràng.
. Mụ hỡnh đối tượng nhất quỏn, trừu tượng, trực quan. Bộ khung web form đưa ra một mụ hỡnh đối tượng cho phộp ta nghĩ đến những form như là một đơn vị, khụng là cỏc phần riờng biệt giữa client và server. Trong mụ hỡnh Web form ta cú thể lập trỡnh một cỏch trực quan hơn cỏc ứng dụng web truyền thống, bao
gồm khả năng thiết lập thuộc tớnh cho cỏc thành phần của form và đỏp trả cỏc sự kiện. Thờm vào đú, Web Form control là một cỏch nhỡn trừu tượng về nội dung vật lý của một trang HTML và của sự tương tỏc giữa browser với server. Túm lại, ta cú thể sử dụng Web Form control theo kiểu ta dựng như cỏc control trong cỏc ứng dụng client thụng thường và khụng phải nghĩ về việc sinh mó HTMLđể hiển thị và xử lý cỏc control và nội dụng của chỳng.
. Quản lý trạng thỏị Bộ khung Web Form nắm bắt cỏc tỏc vụ trong việc duy trỡ trạng thỏi của form hay cỏc control trong nú một cỏch tự động và cung cấp nhiều cỏch rú ràng để duy trỡ thụng tin ứng dụng đặc biệt.
. Nõng cấp server. Bộ khung Web Form cho phộp ta nõng cấp ứng dụng từ một mỏy tớnh với bộ xử lý đơn đến một tầng mỏy tớnh mà khụng cần cỏc thay đổi phưc tạp trong logic ứng dụng.
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