Làm việc với Web Forms, Controls và Events trong ASP.NET
- 11-11-2024
- Toanngo92
- 0 Comments
2.1 Giới thiệu về Phát triển Ứng dụng Web và Web Forms
Ứng dụng web bao gồm các trang mã và tài liệu ở nhiều định dạng khác nhau. Dạng tài liệu cơ bản nhất có thể là một trang HTML tĩnh, chứa dữ liệu có thể định dạng và hiển thị trên trình duyệt trực tuyến. Một trang HTML có thể chứa các liên kết đến các trang HTML khác. Khi vị trí đích được xác định, vị trí đó được gọi là siêu liên kết hoặc URL (Uniform Resource Locator). Việc kết hợp nội dung và liên kết thường được gọi là điều hướng trên Internet, giúp truy cập dữ liệu từ khắp nơi trên thế giới.
Ứng dụng web là một chương trình máy tính được lưu trữ trên máy chủ từ xa và có thể thực hiện nhiều tác vụ khác nhau như xử lý văn bản, duyệt web, mua sắm trực tuyến, và quản lý dữ liệu.
Phát triển Ứng dụng Web và Web Forms
ASP.NET là công nghệ tiên tiến cho phát triển ứng dụng web, mang lại trải nghiệm phong phú cho người dùng. Nó chạy trên một trong những nền tảng tốt nhất là Common Language Runtime (CLR), cung cấp môi trường hiệu quả để thực thi mã với ít mã hơn.
Các website ASP.NET được tạo bằng ASP.NET Web Forms hoặc ASP.NET MVC. Framework này sử dụng các ngôn ngữ lập trình như C#, Visual Basic để phát triển. ASP.NET hỗ trợ các trang Web Forms, Web API, và các trang MVC, tạo nên một hệ thống phát triển ứng dụng mạnh mẽ.
ASP.NET Web Forms tạo ra các trang cung cấp giao diện người dùng tương tác, có thể quản lý dễ dàng hơn và tích hợp được các loại điều khiển khác nhau, phù hợp với các ứng dụng web cần khả năng quản lý dữ liệu và bảo mật mạnh mẽ.
Yêu cầu tới máy chủ ứng dụng web được khởi tạo bởi người dùng thông qua trình duyệt, sử dụng các máy chủ cơ sở dữ liệu để thực hiện tác vụ cần thiết như cập nhật và truy xuất dữ liệu. Trình duyệt sau đó hiển thị thông tin đã yêu cầu đến người dùng thông qua ứng dụng web.
2.2 Thiết lập Môi trường ASP.NET
Microsoft khuyến nghị phát triển các ứng dụng web ASP.NET trong một môi trường phát triển tách biệt. Công cụ phát triển chính để xây dựng các ứng dụng ASP.NET và giao diện front-end là Visual Studio. Đây là một Môi trường Phát triển Tích hợp (IDE) để viết, biên dịch và gỡ lỗi mã.
Visual Studio cung cấp một bộ công cụ phát triển hoàn chỉnh cho việc xây dựng các ứng dụng web, dịch vụ web, ứng dụng desktop và ứng dụng di động. Để tạo các Web Forms ASP.NET và các ứng dụng web khác, Visual Studio 2022 là một IDE với khả năng vượt trội.
Lưu ý: Khi cài đặt, việc lựa chọn loại dự án phù hợp là rất quan trọng để đảm bảo các mẫu đúng đắn.
2.3 Web Forms trong ASP.NET
Web Forms là các trang web cung cấp giao diện người dùng tương tác với sự hỗ trợ của nhiều loại điều khiển khác nhau. Vòng đời của Web Forms tương tự như vòng đời của các quy trình web chạy trên máy chủ. Khi một trang Web Forms được xử lý, thông tin xử lý sẽ được truyền tới trình duyệt thông qua giao thức HTTP.
Để hiểu cách mà trang Web Forms hoạt động trong các ứng dụng web, các nhà phát triển cần nắm được những gì diễn ra bên trong một trang web khi nó được xử lý.
Xử lý một Trang ASP.NET
Tất cả các trang ASP.NET trong một ứng dụng web đều được biên dịch trên máy chủ. Việc biên dịch các trang ASP.NET diễn ra khi URL được người dùng yêu cầu lần đầu tiên. Khi người dùng yêu cầu một URL, mã ASP.NET được gửi tới thiết lập ASP.NET trên Dịch vụ Thông tin Internet (IIS). Công cụ xử lý sẽ tạo các điều khiển ASP.NET cũng như trang Web Forms, sau đó được hiển thị dưới dạng phản hồi URL trong trình duyệt web của máy khách.
Trang Web Form bao gồm hai phần chính, cụ thể như sau:
- ASPX: Là một trang web trực quan hoặc giao diện người dùng (UI).
- File code-behind: Chứa mã phía máy chủ của trang Web, xác định cách mà trang Web và các điều khiển trực quan của nó sẽ hoạt động khi thực thi. Trong một ứng dụng ASP.NET dựa trên C#, file này sẽ có phần mở rộng là .cs.
2.3.1 Tạo một Web Form trong ASP.NET
Để tạo một Web Form bằng IDE, mở Visual Studio 2022. Sau đó, thực hiện các bước sau:
Nhấp vào tùy chọn Create a new project (Tạo dự án mới). Trong cửa sổ Create a New Project (Tạo Dự án Mới), chọn tùy chọn Web từ menu thả xuống All Project Types như được hiển thị trong Hình 2.4.
Lưu ý: Nếu tùy chọn này không hiển thị, điều đó có nghĩa là các công cụ phát triển cho .NET Framework không được chọn trong quá trình cài đặt. Bạn có thể chỉnh sửa cài đặt của Visual Studio 2022 và đảm bảo tùy chọn này đã được chọn.
Xác định tên dự án, ở đây là MyFirstDemo và vị trí thích hợp cho dự án, sau đó nhấp vào Create (Tạo), như được hiển thị trong Hình 2.6.
Tiếp theo, chọn loại ứng dụng cần tạo. Chọn tùy chọn Web Forms như được hiển thị trong Hình 2.7.
Bấm vào Create (Tạo) và dự án sẽ được tạo.
Sau khi dự án được tạo, một vài thư mục và trang mặc định sẽ được thêm vào. Sử dụng Solution Explorer (Trình khám phá Giải pháp), bạn có thể xem các thành phần này, như hiển thị trong Hình 2.8.
Một trang mặc định sẽ tự động được tạo và có thể chỉnh sửa hoặc xóa nếu cần thiết. Khi dự án được chạy, trang hiển thị mặc định là default.aspx
.
Chọn trang Default.aspx từ Solution Explorer và nhấp vào Design. Một giao diện người dùng (UI) sẽ được hiển thị và cung cấp hình ảnh rõ ràng về cách nội dung được tạo ra. Tại đây, nội dung, hình ảnh và căn chỉnh của văn bản có thể được điều chỉnh theo yêu cầu như hiển thị trong Hình 2.9.
Tiếp theo, xóa trang Default.aspx để có thể thêm một Web Form mới.
Nhấp chuột phải vào dự án đã chọn trong Solution Explorer.
Chọn Add → New Item, như hiển thị trong Hình 2.10.
Trong hộp thoại, chọn Web Form và đặt tên là Default, như hiển thị trong Hình 2.11.
Sau đó, trang Default.aspx được xóa và một trang mới được thêm vào, chứa các thẻ HTML mặc định. File Default.aspx mới này chứa mã HTML và ASP, xác định form.
2.3.2 Thêm Điều khiển vào Form
Web Form Designer là cửa sổ chính trong Visual Studio IDE.
Solution Explorer, Toolbox và cửa sổ Properties là các cửa sổ hỗ trợ trong quá trình thiết kế form. Designer được sử dụng để thiết kế form; Code editor để thêm mã vào điều khiển trong form; nút Design hoặc Source được dùng để chuyển đổi giữa các chế độ xem khác nhau trong Web Form Designer.
Ở bên phải, trong cửa sổ Solution Explorer, tất cả các trang mặc định cũng như các trang mới được thêm vào đều có thể nhìn thấy.
Các điều khiển là các phần tử hình ảnh có thể thêm vào ứng dụng. Trong trường hợp này, các điều khiển có thể thêm vào Web Forms.
Các điều khiển có sẵn được thấy trong Toolbox ở bên trái của IDE. Các nhà phát triển web có thể dễ dàng kéo và thả các điều khiển này lên Web Form để phát triển ứng dụng.
Để thêm điều khiển vào Web Form, thực hiện các bước sau:
Chuyển sang chế độ Design bằng cách chọn tab Design ở dưới cùng của màn hình, như hiển thị trong Hình 2.12.
Để xem các điều khiển khác nhau có sẵn, chọn View → Toolbox. Có thể thấy các nhãn (Labels), hộp văn bản (Text Boxes), nút (Buttons), và trình giữ chỗ (Placeholders).
Thêm một điều khiển vào form bằng cách kéo và thả.
Các nhà phát triển có thể chỉnh sửa các thuộc tính của từng điều khiển trực quan bằng cách sử dụng cửa sổ Properties, như hiển thị trong Hình 2.13. Để xem cửa sổ này, chọn View → Properties.
Chọn một điều khiển để thay đổi thuộc tính của nó thông qua cửa sổ Properties và chỉ định giá trị mới cho các thuộc tính.
Bây giờ, tạo một Web Form đơn giản với một nhãn, một hộp văn bản, một lịch, và một nút Gửi, như hiển thị trong Hình 2.14. Kéo và thả tất cả ba điều khiển này từ Toolbox vào chế độ Design View của Web Form. Thanh Search Toolbox trên cùng có thể được sử dụng để tìm kiếm một điều khiển cần thiết.
Để thiết kế một ứng dụng web, có nhiều điều khiển khác nhau có sẵn có thể sử dụng từ Toolbox. Sau khi các trường cần thiết được tạo trong cửa sổ thiết kế, trang có thể được xem trên trình duyệt bằng cách nhấn F5. Trong ví dụ này, khi người dùng nhấp vào nút Submit, sau khi nhập tên, không có gì xảy ra. Điều này là do chưa có hành động nào được chỉ định cho sự kiện nhấp vào nút. Quá trình xử lý sự kiện và chỉ định các hành động cần thực hiện khi sự kiện xảy ra được gọi là xử lý sự kiện (event handling).
2.3.3 Các loại Web Forms
Bảng 2.1 liệt kê các loại Web Forms khác nhau.
Loại Web Form | Mô tả |
---|---|
Web Forms Tiêu chuẩn (Standard Web Forms) | Web Forms tiêu chuẩn là nền tảng của phát triển ứng dụng ASP.NET. Các nhà phát triển có thể tạo các trang web động bằng cách thêm các điều khiển như nút, hộp văn bản, lưới dữ liệu và trình xử lý sự kiện để phản hồi yêu cầu người dùng. |
Trang Master (Master Pages) | Các trang Master cung cấp sự thống nhất về giao diện và hành động trên một trang web. Chúng phục vụ như một bố cục tổng thể cho các trang con, chứa các tiêu đề, chân trang, các phần điều hướng và nội dung được lặp lại trên các trang khác nhau. |
Điều khiển Người dùng (User Controls) | Các điều khiển người dùng có thể sử dụng lại các yếu tố của một trang web, chẳng hạn như các biểu mẫu đăng nhập và thanh công cụ, bằng cách gói chúng vào các điều khiển riêng biệt có thể được tích hợp vào các trang khác nhau. |
Trang Web Parts (Web Parts Pages) | Web Parts cho phép người dùng tùy chỉnh nội dung và bố cục của một trang. Các nhà phát triển có thể tạo bố cục linh hoạt và có thể tùy chỉnh. |
Trang Nội dung | Các trang nội dung hoạt động kết hợp với các trang Master, tập trung vào nội dung độc lập cho từng trang trong khi vẫn giữ nguyên bố cục và cấu trúc từ trang Master. Điều này giúp phát triển bố cục nhất quán trên toàn bộ website. |
Hộp thoại | Hộp thoại là các Web Forms đặc biệt được sử dụng để hiển thị thông tin hoặc tương tác với người dùng. Chúng có thể là các hộp mô-đun hoặc dịch vụ thu thập đầu vào, cung cấp cảnh báo, hoặc hiển thị thông báo. |
Web Forms với AJAX | Tích hợp các Web Forms AJAX giúp giao tiếp không đồng bộ với máy chủ, nâng cao trải nghiệm người dùng bằng cách tải từng phần của trang thay vì tải lại toàn bộ trang. |
Form Đăng nhập và Đăng ký | Đây là các form dành riêng cho xác thực và đăng ký người dùng. Các điều khiển bao gồm hộp văn bản, nút, và các trình xác thực để thu thập và kiểm tra thông tin người dùng. |
2.4 Các Điều khiển trong ASP.NET
Các điều khiển Server trong ASP.NET là các thẻ được máy chủ hiểu và chấp nhận. Có ba loại điều khiển server như sau:
- HTML Server Controls – Các thẻ HTML truyền thống
- Web Server Controls – Thẻ ASP.NET
- Validation Server Controls – Kiểm tra đầu vào
2.4.1 HTML Server Controls
Các điều khiển server cho phép truy cập vào các thuộc tính khác nhau sử dụng mã phía server. Các điều khiển HTML server là các thành phần HTML chứa thuộc tính runat="server"
. Các điều khiển này hỗ trợ tập trung hóa và quản lý trạng thái tự động. Một số lợi ích của điều khiển HTML server so với các phần tử HTML thông thường:
- Các điều khiển HTML server được biên dịch vào tập lệnh với thuộc tính
runat="server"
. - Các điều khiển HTML server được ánh xạ với các thẻ HTML tương ứng.
- Các điều khiển HTML server giữ nguyên giá trị của chúng khi trang ASP.NET được tải lại.
- OnServerEvent được bao gồm trong hầu hết các điều khiển cho các sự kiện được sử dụng phổ biến.
Các thuộc tính của điều khiển phía server có thể được chỉnh sửa bằng cách thêm thuộc tính runat="server"
. Ví dụ, khi tải một trang hoặc trong sự kiện nhấp chuột, điều này cho phép thay đổi các thuộc tính của phần tử. JavaScript được sử dụng để xử lý điều này ở cả phía máy khách và phía server.
Bảng 2.2 liệt kê một số điều khiển HTML server.
Tên Điều khiển | Thẻ HTML với Mô tả |
---|---|
HtmlHead | <head> : Dùng để lưu tiêu đề trang và các liên kết CSS, JavaScript. |
HtmlInputButton | <input type = button> : Tạo nút giống như nút Submit HTML. |
HtmlInputCheck | <input type = checkbox> : Tạo checkbox nhiều lựa chọn. |
HtmlInputFile | <input type = file> : Cho phép tải lên tập tin. |
HtmlInputHidden | <input type = hidden> : Dùng để lưu trữ giá trị ẩn. |
HtmlInputImage | <input type = image> : Tạo loại nút hình ảnh. |
HtmlInputPassword | <input type = password> : Tạo loại đầu vào mật khẩu. |
HtmlInputRadio | <input type = radio> : Tạo lựa chọn một tùy chọn trong nhiều lựa chọn. |
HtmlInputReset | <input type = reset> : Tạo nút đặt lại các giá trị đầu vào về mặc định. |
HtmlInputSubmit | <input type = submit> : Tạo nút gửi dữ liệu. |
HtmlInputText | <input type = text> : Tạo hộp nhập văn bản. |
HtmlImage | <img> : Hiển thị hình ảnh. |
HtmlAnchor | <a> : Tạo liên kết HTML. |
HtmlForm | <form> : Tạo biểu mẫu HTML. |
HtmlTable | <table> : Tạo bảng hiển thị dữ liệu trong định dạng bảng. |
2.4.2 Web Server Controls
Các điều khiển Web Server tích hợp các điều khiển đặc biệt như menu, lịch, và điều khiển cây. Các điều khiển web cung cấp các điều khiển tích hợp nhiều hơn, dễ quản lý hơn so với các điều khiển HTML server. Các điều khiển Web Server cũng bao gồm các điều khiển phức tạp như bảng và các điều khiển nâng cao khác như chọn ngày, hiển thị menu và hiển thị trong lưới.
Các điều khiển Web Server cung cấp các phần tử phổ biến từ các điều khiển HTML Server. Các điều khiển Web Server có tiềm năng hỗ trợ lập trình an toàn kiểu dữ liệu. Nó cũng tự động phát hiện khả năng của trình duyệt và hiển thị giao diện tương thích, hỗ trợ các chủ đề và cung cấp một giao diện nhất quán cho các điều khiển trên toàn bộ website.
Bảng 2.3 liệt kê một số điều khiển Web Server.
Điều khiển Web Server | Mô tả |
---|---|
AdRotator | Hiển thị một chuỗi hình ảnh. |
Button | Hiển thị một nút đẩy. |
Calendar | Hiển thị một lịch. |
CheckBox | Hiển thị một hộp kiểm. |
CheckBoxList | Tạo một hộp kiểm nhiều lựa chọn. |
DataGrid | Hiển thị các trường dữ liệu của một nguồn dữ liệu dưới dạng lưới. |
DataList | Hiển thị các mục từ một nguồn dữ liệu bằng cách sử dụng các mẫu. |
Image | Hiển thị một hình ảnh. |
ImageButton | Hiển thị một hình ảnh có thể nhấp được. |
Label | Hiển thị văn bản tĩnh cung cấp thông tin hoặc phản hồi khi được nhấp. |
ListBox | Tạo một danh sách đơn hoặc danh sách thả xuống nhiều lựa chọn. |
Table | Tạo một bảng. |
2.4.3 ASP.NET Validation Server Controls
Khi tạo một Web Form, người dùng cuối phải điền tất cả các trường yêu cầu như tên đăng nhập, mật khẩu và dữ liệu. Nhà phát triển phải xác minh rằng các trường đã được điền đầy đủ và dữ liệu là chính xác. Phương pháp kiểm tra xem các giá trị đã nhập có đúng hay không được gọi là kiểm tra xác thực (validation) và được sử dụng để xác thực dữ liệu của một điều khiển đầu vào. Nếu dữ liệu không vượt qua kiểm tra xác thực, một thông báo lỗi sẽ được gửi đến người dùng.
Các điều khiển xác thực của ASP.NET có thể được sử dụng khi có nhu cầu tạo form yêu cầu các điều khiển xác thực ASP.NET cần thiết.
Một thao tác kéo và thả đơn giản của điều khiển xác thực ASP.NET và việc viết một đoạn mã nhỏ trong Web Form sẽ mô tả chức năng của nó. Điều này giảm thiểu tải trên máy chủ cũng như giảm công sức của nhà phát triển khi viết mã JavaScript cho các loại xác thực khác nhau.
Bảng 2.4 liệt kê một số điều khiển xác thực phổ biến.
Điều khiển Xác thực | Mô tả |
---|---|
CompareValidator | So sánh giá trị của một điều khiển đầu vào với giá trị của một điều khiển đầu vào khác hoặc giá trị cố định. |
CustomValidator | Cho phép viết một phương thức để xử lý xác thực của giá trị đã nhập. |
RangeValidator | Kiểm tra xem người dùng có nhập giá trị nằm ngoài phạm vi đã xác định không. |
RegularExpressionValidator | Xác thực rằng giá trị của điều khiển đầu vào phù hợp với mẫu đã chỉ định. |
RequiredFieldValidator | Tạo yêu cầu cho một trường bắt buộc. |
ValidationSummary | Hiển thị báo cáo tổng hợp về tất cả các lỗi xác thực đã xảy ra trong một trang web. |
Bảng 2.4: Điều khiển Xác thực
Cú pháp để tạo một điều khiển xác thực như sau:
<asp:control_name id="some_id" runat="server" />
2.5 Xử lý Sự kiện trong ASP.NET
Một sự kiện được tạo ra cho bất kỳ hành động nào như nhấn phím hoặc nhấp chuột. Nó cũng bao gồm các thông báo được tạo ra bởi hệ thống. Một quy trình diễn ra thông qua các sự kiện. Ví dụ, các sự kiện được gọi là các sự kiện được tạo sẵn. Tại thời điểm xảy ra sự kiện, ứng dụng phải có khả năng xác định và xử lý nó.
Các sự kiện được xử lý tại máy chủ khi chúng được tạo ra ở phía máy khách trong ASP.NET. Ví dụ, đối với một nút được nhấp vào trong trình duyệt bởi người dùng, sự kiện được tạo ra là sự kiện Click. Sau khi xử lý sự kiện, trình duyệt gửi sự kiện này đến máy chủ. Tại thời điểm này, một trình xử lý sự kiện được thực hiện khi thông báo sự kiện được gửi đến máy chủ. Nó cũng kiểm tra xem sự kiện Click có trình xử lý sự kiện hay không.
Các trình xử lý sự kiện trong ASP.NET sử dụng hai tham số và trả về void.
private void Event Name (object sender, EventArgs e);
2.5.1 Sự kiện Ứng dụng và Phiên
Dưới đây là các sự kiện ứng dụng được sử dụng quan trọng nhất:
- Application_Start – Sự kiện này được khởi tạo khi ứng dụng/trang web được bắt đầu.
- Application_End – Sự kiện này được khởi tạo khi ứng dụng/trang web được đóng lại.
Dưới đây là các sự kiện phiên được sử dụng phổ biến nhất:
- Session_Start – Sự kiện này được khởi tạo khi người dùng yêu cầu một trang từ ứng dụng.
- Session_End – Sự kiện này được khởi tạo khi phiên kết thúc.
2.5.2 Trạng thái Ứng dụng và Phiên
Trạng thái ứng dụng trong ASP.NET cho biết việc lưu trữ dữ liệu, có sẵn cho tất cả các lớp trong ứng dụng. Trạng thái cung cấp quyền truy cập nhanh vào dữ liệu/thông tin được lưu trong cơ sở dữ liệu. Trạng thái này có thể áp dụng cho tất cả các phiên làm việc của người dùng.
Thực thể HttpApplicationState
được tạo ra khi người dùng truy cập vào tài nguyên lần đầu tiên. Trạng thái này luôn được lưu trong bộ nhớ của máy chủ, trừ khi bị mất khi ứng dụng được đóng hoặc khởi động lại bởi người dùng.
Trạng thái phiên cho phép người dùng lưu trữ và truy cập các giá trị khi người dùng duyệt qua các trang trong ứng dụng. Trong một khoảng thời gian ngắn, trạng thái kiểm tra yêu cầu từ trình duyệt. Trạng thái phiên luôn được bật cho tất cả các biến và giá trị được lưu trữ trong đối tượng SessionStateItemCollection
.
2.5.3 Sự kiện Trang và Điều khiển
ASP.NET có các sự kiện trang và điều khiển. Các sự kiện được giải thích theo trình tự hoạt động của chúng như sau:
- PreInit: Sự kiện này được nâng lên để tạo hoặc tái tạo các điều khiển động. Thuộc tính
IsPostBack
được kiểm tra để xác định xem đây có phải là lần đầu tiên trang được tải hay không. Các thuộc tínhIsCallback
vàIsCrossPagePostBack
cũng được kiểm tra tại thời điểm này. - Init: Sự kiện này được nâng lên sau khi tất cả các điều khiển đã được khởi tạo.
- InitComplete: Sự kiện này được nâng lên vào cuối giai đoạn khởi tạo của trang.
- PreLoad: Sự kiện này được sử dụng để thực thi quá trình xử lý trên trang hoặc điều khiển trước khi xử lý sự kiện tải (load event).
- Load: Sự kiện này được khởi tạo khi trang hoặc một điều khiển được tải.
- PreRender: Sự kiện này được khởi tạo trước khi trang hoặc điều khiển được hiển thị.
- LoadComplete: Sự kiện này được sử dụng khi các điều khiển đã được tải trên trang.
- Render: Sự kiện này ghi nội dung đánh dấu của điều khiển vào trình duyệt web.
- Unload: Sự kiện này được khởi tạo khi trang hoặc điều khiển bị xóa khỏi bộ nhớ.
2.5.4 Xử lý Sự kiện cho Điều khiển
Các điều khiển trong ASP.NET được áp dụng dưới dạng các lớp và chúng chứa các sự kiện được kích hoạt khi người dùng thực hiện một hành động trên chúng.
Ví dụ: khi người dùng nhấp vào nút, sự kiện “Click” được tạo ra. Các thuộc tính tích hợp sẵn và các trình xử lý sự kiện được sử dụng để xử lý các sự kiện. Ứng dụng Visual Studio tạo ra trình xử lý sự kiện bằng cách bao gồm câu lệnh Handles
và một thủ tục con.
2.5.5 Tạo Trình xử lý Sự kiện trong Visual Studio
Để tạo trình xử lý sự kiện mặc định, nhấp đúp vào điều khiển trong chế độ Design để tạo trình xử lý sự kiện.
Visual Studio tạo một trình xử lý cho sự kiện mặc định và sau đó, trình chỉnh sửa mã mở ra trong chế độ chèn để viết mã cho trình xử lý sự kiện.
Mã cho việc tạo một nút ASP.NET đơn giản được hiển thị trong Code Snippet 1.
<asp:Button ID="BtnCancel" runat="server" Text="Cancel" />
Bảng 2.5 liệt kê một số sự kiện điều khiển phổ biến.
Sự kiện | Thuộc tính | Điều khiển |
---|---|---|
Click | OnClick | Button, ImageButton, LinkButton, và ImageMap |
Command | OnCommand | Button, LinkButton, và ImageButton |
TextChanged | OnTextChanged | TextBox |
SelectedIndexChanged | OnSelectedIndexChanged | DropDownList, ListBox, RadioButtonList và CheckBoxList |
CheckedChanged | OnCheckedChanged | CheckBox và RadioButton |
Giả sử rằng một điều khiển nút với ID btnSubmit
và văn bản là “Submit” đã được tạo trong ứng dụng Web Forms, khi nhà phát triển nhấp đúp vào điều khiển trong Design, trình xử lý sự kiện sau sẽ tự động được tạo:
protected void btnSubmit_Click(object sender, EventArgs e) {
// Code xử lý sự kiện sẽ được thêm vào đây
}
Nhà phát triển có thể thêm mã thích hợp theo yêu cầu trong trình xử lý sự kiện. Ví dụ, Code Snippet 2 đưa ra một ví dụ về việc áp dụng một thông điệp tùy chỉnh qua điều khiển Label.
protected void btnSubmit_Click(object sender, EventArgs e) {
lblMessage.Text = "Hi, Greetings and Good Day.";
}
2.6 Xử lý Ngoại lệ trong ASP.NET
Ngoại lệ là các lỗi xảy ra trong thời gian chạy, làm gián đoạn luồng thực thi của các lệnh trong một chương trình. Khi gặp phải ngoại lệ, ứng dụng sẽ dừng lại mà không cho phép mã tiếp tục thực thi.
Trong ASP.NET, nhà phát triển có thể xử lý các ngoại lệ này bằng cách sử dụng các khối try-catch
hoặc try-catch-finally
. Khối try
chứa các lệnh có khả năng gây ra ngoại lệ; khối catch
được thiết kế để xử lý các ngoại lệ.
Khối finally
, thực thi bất kể ngoại lệ có xảy ra hay không, có thể được sử dụng để xử lý quá trình dọn dẹp.
Cú pháp
try {
// Các lệnh có thể gây ra ngoại lệ
}
catch (ExceptionClassName x) {
// Các lệnh để xử lý ngoại lệ
}
finally {
// Các lệnh để dọn dẹp
}
Code Snippet 3 đưa ra một ví dụ sử dụng khối try-catch-finally
trong ASP.NET.
Code Snippet 3
<script runat="server">
public Page_Load(sender As Object, e As EventArgs){
try {
// Các lệnh có thể gây ra ngoại lệ
}
catch (ExceptionClassName x) {
// Các lệnh để xử lý ngoại lệ
}
finally {
// Các lệnh để dọn dẹp
}
}
</script>
2.6.1 Ngoại lệ chưa được xử lý
Khi một ngoại lệ xảy ra bất ngờ và nằm ngoài phạm vi của khối try/catch/finally
, các trình xử lý sự kiện lỗi của trang và ứng dụng sẽ được sử dụng. Khi không có cách nào để xử lý một ngoại lệ đã xảy ra bất thường, nó sẽ được xử lý ở mức độ trang hoặc cấp ứng dụng. Nếu xử lý ở mức độ trang, chi tiết bổ sung cần được cung cấp cho sự kiện Page_Error
.
Cú pháp
public void Page_Error(Object sender, EventArgs e) {
// Thực hiện xử lý ở đây
}
Sự kiện Application_Error
cũng có thể được sử dụng để xử lý cùng một ngoại lệ.
public void Application_Error(Object sender, EventArgs e) {
// Thực hiện xử lý ở đây
}
2.6.2 Làm việc với Lỗi Tùy chỉnh
Code Snippet 4 mô tả cài đặt mặc định có sẵn trong file machine.config
của ứng dụng Web ASP.NET.
Code Snippet 4
<customErrors mode="RemoteOnly"/>
Thuộc tính mode
chứa ba tùy chọn có thể được sử dụng để tùy chỉnh lỗi, bao gồm:
- RemoteOnly: Nếu trang lỗi tùy chỉnh tồn tại, nó sẽ hiển thị cho người dùng từ xa khi xảy ra ngoại lệ bất kỳ.
- On: Trang lỗi ASP.NET chi tiết được hiển thị cho cả người dùng từ xa và cục bộ. Trang này hiển thị khi không có trang lỗi tùy chỉnh nào.
- Off: Trang lỗi ASP.NET chi tiết được hiển thị cho mọi người dùng, ngay cả khi có trang lỗi tùy chỉnh.
Ngoài các thiết lập chế độ, một số tùy chọn cấu hình khác cũng có sẵn cho thuộc tính customErrors
. Một trong những tùy chọn quan trọng nhất là defaultRedirect
. Khi xảy ra lỗi, khách hàng được chuyển hướng đến một trang lỗi tùy chỉnh, như trong Code Snippet 5.
Code Snippet 5
<customErrors mode="On" defaultRedirect="errorPage.aspx"/>
2.7 Làm việc với LINQ
LINQ (Language Integrated Query) là một framework truy vấn C# cho phép bạn truy cập dữ liệu từ nhiều nguồn và định dạng khác nhau. Nó cho phép xử lý thông tin từ nhiều nguồn như cơ sở dữ liệu, XML, hoặc dữ liệu động. LINQ cung cấp một giao diện truy vấn duy nhất cho nhiều nguồn dữ liệu. LINQ cũng có cú pháp đơn giản.
LINQ cung cấp quyền truy cập nhất quán vào các nguồn dữ liệu khác nhau như các cơ sở dữ liệu SQL và XML, sử dụng cú pháp giống nhau để truy cập các nguồn dữ liệu khác nhau từ trong môi trường .NET. LINQ giúp giảm lỗi khi truy vấn dữ liệu bằng cách loại bỏ lỗi nhập cú pháp và kiểm tra kiểu dữ liệu trong thời gian biên dịch.
Các nhà cung cấp LINQ chính được Microsoft cung cấp bao gồm:
- LINQ to Objects: Cho phép truy vấn các tập hợp đối tượng trong bộ nhớ.
- LINQ to SQL: Truy vấn cơ sở dữ liệu SQL.
- LINQ to XML: Truy vấn dữ liệu XML.
Hình 2.15 hiển thị các nhà cung cấp LINQ như một cầu nối giữa LINQ và các nguồn dữ liệu như SQL và XML.
LINQ hỗ trợ thực thi trì hoãn (deferred execution), cho phép đánh giá một biểu thức LINQ chỉ khi giá trị thực của nó được yêu cầu. Điều này cải thiện hiệu suất đáng kể bằng cách tránh thực thi không cần thiết. Thực thi trì hoãn có thể được áp dụng trên bất kỳ dữ liệu nào như LINQ-to-SQL, LINQ-to-Entities, LINQ-to-XML, hoặc các tập hợp trong bộ nhớ.
2.7.1 Tạo một Ứng dụng với LINQ từ XML
Mở Visual Studio 2022. Sau đó, thực hiện các bước sau:
- Mở giải pháp MyFirstDemo đã được tạo trước đó, như hiển thị trong Hình 2.16.
Tiếp theo, thêm một tệp XML vào thư mục Data trong cùng ứng dụng và đặt tên là Employee như hiển thị trong Hình 2.17.
Tiếp theo, tạo dữ liệu cho Employee như hiển thị trong Hình 2.18.
Mở trang Default.aspx, loại bỏ các điều khiển hiện có, và thêm mã LINQ như hiển thị trong Hình 2.19.
Trong ví dụ, kiểu XElement
được sử dụng để tải một tệp XML vào bộ nhớ và phân tích cú pháp XML. Điều này giúp loại bỏ mã cũ và giảm khả năng xảy ra lỗi và sai sót.
Tham chiếu của nội dung XML, hai bản ghi nhân viên, được tải vào đối tượng xelementEmployee
. LINQ truy vấn dữ liệu bằng cách sử dụng cú pháp where
và select
. Điều này được thực hiện để lọc thông tin cho một quốc gia cụ thể trong cột EmpLocation
. Khi bộ sưu tập có sẵn trong đối tượng kết quả result
, foreach
được sử dụng để duyệt qua các phần tử trong result
.
Việc sử dụng <%=%>
trong trang .aspx
cho phép linh hoạt sử dụng mã từ code-behind ngay trong trang.
Kết quả của mã được hiển thị trong Hình 2.20.
Các thay đổi nhỏ có thể được thực hiện để chỉ lấy tên, sử dụng xEle.Element("...").t
để cung cấp tên cột cụ thể như hiển thị trong Hình 2.21.
Kết quả của truy vấn LINQ này được hiển thị trong Hình 2.22.
2.8 Lưu trữ Dữ liệu (Data Caching)
Một trong những chiến lược quan trọng của ASP.NET là lưu trữ dữ liệu (caching), giúp tăng hiệu suất của ứng dụng. Caching đề cập đến việc lưu trữ mọi thứ vào bộ nhớ mà hệ thống yêu cầu thường xuyên nhằm tăng cường hiệu suất. Output Cache được sử dụng để tăng hiệu suất của ứng dụng ASP.NET MVC.
Thuộc tính Output Cache trong ASP.NET MVC tương tự như lưu trữ đầu ra trong các Web Forms. Output Cache được sử dụng để lưu lại nội dung trả về từ một phương thức của controller. Điều này cho phép lưu kết quả của một controller vào bộ nhớ. Do đó, tất cả các yêu cầu cho cùng một thao tác trong controller đó sẽ trả lại nội dung đã được lưu trong bộ nhớ cache. Điều này loại bỏ yêu cầu tạo lại nội dung giống nhau mỗi khi cùng một controller được gọi.
Bộ lọc Output Cache cho phép nhà phát triển lưu trữ dữ liệu từ đầu ra của một phương thức action. Thuộc tính này lưu trữ dữ liệu trong bộ nhớ cache trong 60 giây theo mặc định trước khi ASP.NET MVC lưu lại kết quả một lần nữa.
Code Snippet 6 hiển thị mã để triển khai Output Cache.
Code Snippet 6
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult Test() {
var i = Int32.MaxValue;
System.Threading.Thread.Sleep(4000);
return Content((Count++).ToString());
}
Trong Code Snippet 6, kết quả của phương thức Test()
được lưu trong bộ nhớ cache trong 20 giây theo mặc định.
2.9 Web API
Giao diện Lập trình Ứng dụng (API) đề cập đến công nghệ cho phép giao tiếp giữa các ứng dụng. Web API đề cập đến giao tiếp giữa các ứng dụng web. Nó sử dụng giao thức HTTP, các tính năng HTTP như các định danh tài nguyên thống nhất (URIs), các tiêu đề yêu cầu/phản hồi, bộ nhớ đệm, quản lý phiên bản, và các định dạng nội dung khác nhau. Không cần cấu hình bổ sung cho các thiết bị khác nhau, chỉ cần xác định chúng bằng cách sử dụng Web API.
Trong xu thế hiện nay, mọi người sử dụng thiết bị di động, máy tính bảng với các ứng dụng gốc thay vì các ứng dụng web. Để hiển thị bất kỳ dịch vụ nào cho những trình duyệt và ứng dụng trên thiết bị hiện đại, một API tương thích với cả hai là cần thiết. Ví dụ, người dùng có thể sử dụng Twitter, Facebook, và Google API trên cả ứng dụng web và ứng dụng di động. Để phơi bày dữ liệu và dịch vụ cho các thiết bị khác nhau, nhà phát triển sử dụng Web API. Đây là một nền tảng mã nguồn mở và lý tưởng cho các ứng dụng RESTful.
REST là một tập hợp các nguyên tắc hoặc hướng dẫn áp dụng cho kiến trúc có sẵn trong một hệ thống mạng. REST không phải là một giao thức hay một tiêu chuẩn mà là một phong cách kiến trúc mà các hệ thống được thiết kế để phân loại giao thức, địa chỉ, đại diện tài nguyên, và các yêu cầu HTTP. RESTful Web Services là các dịch vụ web dựa trên kiến trúc REST và được truy cập bằng giao thức HTTP trên Web.
ASP.NET Web API là một công nghệ đặc biệt giúp các nhà phát triển dễ dàng tạo các ứng dụng phân tán đơn giản để tạo dịch vụ HTTP, điều này giúp khách hàng đa dạng sử dụng API với các thiết bị và trình duyệt khác nhau. Với .NET Framework, ASP.NET Web API là một giải pháp tuyệt vời để phát triển các ứng dụng RESTful.
Dưới đây là các tính năng của Web API:
- Hỗ trợ các thao tác theo quy ước như Tạo, Đọc, Cập nhật và Xóa (CRUD) với các phương thức HTTP như POST và GET.
- Bao gồm một tiêu đề chấp nhận và mã trạng thái HTTP để phản hồi.
- Định dạng phản hồi thành JSON, XML, hoặc bất kỳ định dạng nào bằng cách sử dụng thuộc tính MediaTypeFormatters. Điều này cũng bổ sung khả năng tùy chỉnh nội dung.
- Đơn giản hóa mô hình và ràng buộc thông qua routing, bộ điều khiển, kết quả hành động, và các bộ lọc. Ngoài các tính năng của MVC, các bộ lọc còn bao gồm ràng buộc mô hình, bộ chứa IOC, và tiêm phụ thuộc.
- Chấp nhận và tạo nội dung, chẳng hạn như hình ảnh, tệp PDF, và nhiều định dạng khác.
- Hỗ trợ Open Data Protocol (OData) một cách tự động, cho phép thiết lập truy vấn OData mà không cần cấu hình bổ sung. Tại đây, mô hình điều khiển liên kết với mô hình cấu trúc dữ liệu để áp dụng các truy vấn bộ lọc.
- Chạy trong ứng dụng hoặc trên Internet Information Server (IIS).
2.10 Bảo mật Web
Việc triển khai bảo mật đòi hỏi xác thực, mã hóa và phân quyền. Khi người dùng cố gắng truy cập vào một website, nhận dạng người dùng và xác thực là bắt buộc. Các cơ chế sau đây được sử dụng cho xác thực người dùng:
Windows | Dành cho các ứng dụng Intranet trong một tổ chức, cho phép người dùng xác thực bằng thông tin đăng nhập Windows hiện có. | |
Form | Dành cho các ứng dụng Internet; người dùng tự xác định thông tin đăng nhập và mật khẩu của họ. Thông tin đăng nhập được lưu trữ dưới dạng dữ liệu. | |
Passport | Dịch vụ của Microsoft cung cấp đăng nhập một lần cho các dịch vụ khác nhau. |
Mã hóa dữ liệu trong quá trình giao tiếp giữa trình duyệt và máy chủ web đảm bảo bảo mật và tính toàn vẹn. Quá trình xác định và gán các quyền đặc biệt cho từng người dùng được gọi là phân quyền. Tính toàn vẹn của dữ liệu được bảo đảm thông qua nhiều phương pháp khác nhau, như triển khai chữ ký số.