Bài giảng chi tiết môn học lập trình ASP.Net Bài học cung cấp kiến thức cơ sở lý thuyết tổng quan về ASP.NET, kiến trúc ASP.NET, Code phía server, cách thức truyền dữ liệu giữa các trang, chuyển trang. Sau khi học xong bài học này sinh viên có thể xây dựng được các trang Web Form sử dụng điều khiển Html, Server và biết cách truyền dữ liệu giữa các trang Web
HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET Bài Tổng quan ASP.Net - Mục đích, yêu cầu: Bài học cung cấp kiến thức sở lý thuyết tổng quan ASP.NET, kiến trúc ASP.NET, Code phía server, cách thức truyền liệu trang, chuyển trang Sau học xong học sinh viên xây dựng trang Web Form sử dụng điều khiển Html, Server biết cách truyền liệu trang Web - Hình thức tổ chức dạy học: Lý thuyết + tự học - Thời gian: Lý thuyết(trực tiếp: 3) Tự học, tự nghiên cứu: 06 - Nội dung: ASP.NET VÀ WEB FORM 1.1 Mơ hình lập trình phía máy chủ 1.2 Cơ chế xử lý file ASP.NET phía máy chủ 1.3 Cấu trúc trang ASP.Net 1.4 Tổng quan ASP.Net Server controls 10 1.5 Các điều khiển Web Server Controls 12 CÁC ĐỐI TƯƠNG TRONG ASP.NET 21 2.1 Request Object 21 2.2 Response Object 23 2.3 Server Object 26 2.4 Session Object 26 2.5 Application Object 26 Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET ASP.NET VÀ WEB FORM 1.1 Mô hình lập trình phía máy chủ Trong giới web, tất giao tiếp Client (trình duyệt) Server (web server) thực theo chế “Request and Response” Tức là, trước tiên phía máy khách cần phải “requesst” (gửi yêu cầu) tới Server, sau phía server “response” (hồi đáp) lại yêu cầu Cùng chế này, người ta có cách tiếp cận để xử lý “request trang web” từ máy khách: Cách 1: Khi máy khách yêu cầu trang – ví dụ trang abc – máy chủ đọc toàn nội dung trang gửi cho phía máy khách mà khơng thực xử lý Nó hồn tồn khơng qua tâm đến ý nghĩa bên trang abc Nội dung trang sau phía trình duyệt xử lý Cách 2: Khi máy khách yêu cầu trang – ví dụ trang xyz – máy chủ đọc tồn nội dung trang xử lý Server (trước gửi cho client) để kết quả, lấy kết xử lý gửi cho phía máy khách Kết trả cho máy khách chứa phần tử HTML, câu lệnh JavaScript, định nghĩa kiểu CSS….và tiếp tục phía client (trình duyệt) xử lý cách Với cách 1, việc xử lý không diễn bên phía server nên trang web khơng thể đọc/ ghi liệu Server (ví dụ Danh sách khách hàng, danh mục sản phẩm,….) Vì phù hợp với trang web đơn giản, khơng địi hỏi xử lý chi tiết Với cách 2, việc xử lý thơng tin server nên hồn tồn đọc/ ghi liệu server Vì vậy, phù hợp với dự án lớn tính bảo mật cao Mơ hình theo cách gọi mơ hình lập trình phía máy chủ Dưới hình ảnh minh họa cho mơ hình này: Mơ hình lập trình phía máy khách (Client side) Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET Mơ hình lập trình phía máy chủ Câu hỏi: Khi trang xử lý bên Server trước ? hay nói cách khác gọi xử lý theo mơ hình phía server? Trả lời: Các trang (file) có mở rộng mà server xử lý, ví dụ: asp, php, jsp, aspx… Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET Câu hỏi: Có thể lấy ví dụ trang xử lý phía server trang khơng xử lý phía server ? Trang1.htm Trang2.aspx Hello world Untitled Page dòng xử lý bên phía server trước Câu hỏi: Chương trình Client server có thiết phải nằm hai máy tính riêng biệt khơng ? Client trình duyệt (IE, FireFox…), cịn server chương trình ? Trả lời: Hai chương trình hồn tồn nằm máy tính Chương trình server thực chất chương trình có tên IIS (Internet Information Service) Câu hỏi: Phải viết để server hiểu cần phải xử lý bên phía server trước gửi cho phía Client ? Trả lời: Trước tiên phải đặt phần mở rộng cho file (ví dụ aspx), sau trình duyệt cần phải đặt nội dung muốn xử lý bên phía server cặp thẻ đặc biệt, ví dụ: Hoặc: Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET *** Chính ký hiệu Runat = “Server” “mách bảo” Server : “Hãy xử lý nội dung bên phía server đi”! Nếu khơng có ký hiệu server làm việc gửi trả lại cho trình duyệt xử lý Câu hỏi: Sao khơng gửi cho trình duyệt xử lý trước mà phải để server xử lý …! Để Client xử lý giảm tải cho server, điều chẳng tốt ? Trả lời: Vì trình duyệt hiểu xử lý thẻ HTML Javascript thơi, cịn khơng thể xử lý nội dung phức tạp Ví dụ khơng hiểu asp:Calendar ? 1.2 Cơ chế xử lý file ASP.NET phía máy chủ Đối với trang ASP.NET, chế xử lý giống mô tả trên, tức theo mơ hình xử lý bên phía server Nhưng có bổ sung thêm tính Compile and Cache: Giải thích chế xử lý trên: - Bước 1: Người lập trình phải tạo trang ASPX (giả sử tên trang abc.aspx) đặt vào thư mục web web server (có tên www.server.com) Trên địa trình duyệt, người dùng nhập trang www.server.com/abc.aspx - Bước 2: Trình duyệt gửi yêu cầu tới server với nội dung: ”Làm ơn gửi cho tơi trang abc.aspx tốt !” Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET - Bước 3: web server biên dịch code trang aspx (bao gồm mã code vb.net/ c# - gọi code behind hay code file) thành class - Bước 4: Lớp sau biên dịch thực thi Bước 5: trả kết cho trình duyệt Riêng với ASP.NET việc biên dịch thực “thông minh hơn”, sau: Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET 1.3 Cấu trúc trang ASP.Net Một trang ASP.NET bao gồm phần giao diện người dùng phần xử lý logic bên Giao diện người dùng chịu trách nhiệm hiển thị thông tin tiếp nhận liệu từ người dùng, phần xử lý (lập trình) đảm nhiệm việc điều khiển tương tác người dùng với trang web Phần giao diện người dùng bao gồm file chứa ngôn ngữ đánh dấu – HTML XML server controls chẳng hạn File gọi Trang (Page) có mở rộng aspx Phần đáp ứng tương tác người dùng với trang web thực ngơn ngữ lập trình chẳng hạn Visual Basic.NET C# Chúng ta thực việc viết code ngơn ngữ lập trình hỗ trợ CLR trang ASPX tách file riêng File tách riêng gọi file Code Behind hay gọi Code file Đuôi mở rộng Code file VB (Nếu dùng ngôn ngữ Visual Basic) CS (nếu dùng ngôn ngữ C#) Một trang ASP.Net gồm thành phần: Phần giao diện (file *.aspx ) Phần xử lý - lập trình (file *.aspx.cs ) Để viết code (C#,VB.Net, ) xây dựng trang web asp.net ta có cách sau: Cách 1: Viết code trực tiếp trang giao diện *.aspx: Thông qua cặp thẻ Thông qua cặp thẻ Cách 2: Viết code trang code *.aspx.cs (code-behind thường dùng) Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET Ví dụ 1: viết code trực tiếp trang *.aspx thông qua cặp thẻ Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET Ví dụ 2: viết code trực tiếp trang *.aspx thông qua cặp thẻ Học kết hợp Trang HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET Ví dụ 3: viết code trang code behind *.aspx.cs 1.4 Tổng quan ASP.Net Server controls 1.4.1 Giới thiệu Để giúp cho việc phát triển ứng dụng web nhanh chóng thuận tiện, ASP.NET cung cấp cho tập hợp điều khiển sẵn có để thực hầu hết công việc phổ biến hàng ngày Các điều khiển chia làm loại: HTML Server Controls Web server controls Học kết hợp Trang 10 HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET * Trang xử lý (file *.aspx.cs) protected void btTong_Click(object sender, EventArgs e) { int so1,so2,tong; so1 = Int32.Parse(txtSoA.Text); so2 = Int32.Parse(txtSoB.Text); tong = so1 + so2; txtTong.Text = tong.ToString(); } 1.5.6 Listbox DropdownList ListBox DropdownList điều khiển hiển thị danh sách lựa chọn mà người dùng chọn nhiều (chỉ dành cho ListBox) Các mục lựa chọn thêm vào danh sách thơng qua lệnh cửa sổ thuộc tính (Property Windows) a Các thuộc tính – + AutoPostBack: Thuộc tính qui định điều khiển có phép tự động PostBack Server số mục chọn bị thay đổi Giá trị mặc định thuộc tính False - không tự động Postback – + Items: Đây tập hợp chứa mục chọn điều khiển Ta thêm vào mục chọn vào thời điểm thiết kế thông qua cửa sổ ListItem Collection Editor, thông qua lệnh – + Rows: Qui định chiều cao ListBox theo số dòng hiển thị – + SelectionMode: Thuộc tính xác định cách thức chọn mục ListBox SelectionMode phép thay đổi trình thiết kế, vào lúc thực thi chương trình, thuộc tính đọc ƒ - Single: Chỉ chọn mục có danh sách (mặc định) ƒ - Multiple: Cho phép chọn nhiều lựa chọn b Xử lý mục chọn Các thuộc tính sau giúp bạn xác định số, giá trị mục chọn Trong trường hợp điều khiển cho phép chọn nhiều, ta duyệt qua Item tập hợp Items, sử dụng thuộc tính Selected đối tượng Item để kiểm tra xem mục có chọn hay khơng – + SelectedIndex: Cho biết số mục chọn Trong trường hợp chọn nhiều mục, SelectedIndex trả số mục chọn – + SelectedItem: Cho biết mục chọn Trong trường hợp chọn nhiều mục, SelectedItem trả mục chọn Học kết hợp Trang 16 HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET – + SelectedValue: Cho biết giá trị mục chọn Trong trường hợp chọn nhiều mục, SelectedValue trả giá trị mục chọn c Tìm hiểu tập hợp Items – + Add: Thêm mục vào cuối danh sách, sử dụng phương thức Items.Add Items.Add() Items.Add() – + Insert: Thêm mục vào danh sách vị trí đó, sử dụng phương thức Items.Insert Items.Insert(,) Items.Insert(,) – + Count: Trả số mục (Item) có danh sách Items.Count – + Contains: Kiểm tra xem Item có tập hợp Items hay chưa, có, phương thức trả giá trị True, ngược lại, trả False Items.Contains() – + Remove: Xóa đối tượng Item khỏi danh sách Items.Remove() Items.Remove() Trong trường hợp đối tượng Item kiểu chuỗi, ta truyền vào chuỗi để xóa Nếu có nhiều giá trị giống danh sách, có mục chọn bị xóa Trong trường hợp đối tượng Item đối tượng, ta truyền vào biến tham chiếu đến item cần xóa – + RemoveAt: Xóa item vị trí index khỏi danh sách tems.RemoveAt() – + Clear: Phương thức Clear tập hợp Items dùng để xóa tất Item có danh sách Cú pháp: Items.Clear Ví dụ: Điều khiển danh sách ListBox: ID=lstKhu_dl; SelectionMode=Multiple; Rows=4 Học kết hợp Trang 17 HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET * Trang giao diện (file *.aspx) * Trang xử lý (file *.aspx.cs) protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lstKhu_dl.Items.Add("Vịnh Hạ Long"); lstKhu_dl.Items.Add("Phan Thiết - Mũi Né"); lstKhu_dl.Items.Add("Nha Trang"); lstKhu_dl.Items.Add("Đà Lạt");} } protected void btChon_Click(object sender, EventArgs e) { LblDia_Diem.Text = ""; if (lstKhu_dl.SelectedItem.Selected) LblDia_Diem.Text= "Bạn chọn: " + lstKhu_dl.SelectedValue ; } Học kết hợp Trang 18 HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET 1.5.7 Checkbox, RadioButton a Các thuộc tính – + Checked: Cho biết trạng thái mục chọn - có chọn hay khơng – + TextAlign: Qui định vị trí hiển thị điều khiển so với chuỗi văn – + AutoPostBack: Thuộc tính qui định điều khiển có phép tự động PostBack Server mục chọn điều khiển bị thay đổi Giá trị mặc định thuộc tính False - khơng tự động Postback – + GroupName (RadioButton): Tên nhóm Thuộc tính sử dụng để nhóm điều khiển RadioButton lại thành nhóm b.Ví dụ Danh sách điều khiển: 1.5.8 CheckBoxList, RadioButtonList Hai điều khiển dùng để tạo nhóm CheckBox/Radio Button Do điều khiển danh sách nên có thuộc tính Items chứa tập hợp mục chọn ListBox/DropDownList Các thao tác tập hợp Items, xử lý mục chọn tương tự ListBox/DropDownList a Các thuộc tính ƒ + RepeatColumns: Qui định số cột hiển thị ƒ + RepeatDirection: Qui định hình thức hiển thị Học kết hợp Trang 19 HỌC PHẦN: LẬP TRÌNH WEB BẰNG ASP.NET ƒ -Vertical: Theo chiều dọc -Horizontal: Theo chiều ngang ƒ + AutoPostBack: Thuộc tính qui định điều khiển có phép tự động PostBack Server mục chọn điều khiển bị thay đổi Giá trị mặc định thuộc tính False - khơng tự động Postback b Ví dụ Điều khiển RadioButtonList: RepeatColumns=2; Items=… ID=rblThu_Nhap; AutoPostBack=true; * Trang giao diện (file *.aspx) Dưới triệu 1-3 triệu Trên triệu Trên 10 triệu Trên 15 triệu Trên 20 triệu Học kết hợp Trang 20