Lê đình Thanh, Công nghệ ASP.NETđối tượng Response Ớ đối tượng Response ựược sử dụng ựể sinh ra HTTP response Ớ Mỗi trang .aspx ựều chứa ựối tượng Response như một thuộc tắnh ựược kế thừ
Trang 1Lê đình Thanh, Công nghệ ASP.NET
Lê đình Thanh
Bộ môn Mạng và Truyền thông Máy tắnh Khoa Công nghệ Thông tin Trường đại học Công nghệ, đHQGHN
Bài giảng
LẬP TRÌNH ỨNG DỤNG WEB
Công nghệ ASP.NET
Bài 4
Trang 2Lê đình Thanh, Công nghệ ASP.NET
Ớ Nội dung trang web (HTML + CSS +
JavaScript) ựược Web Server sinh ra khi có yêu cầu từ Client.
Ớ Rất phổ dụng: Hầu hết các trang web thương mại ựều là web ựộng.
Ớ Sử dụng ngôn ngữ lập trình ựa năng ựể sinh ra nội dung web.
Ớ Sử dụng CSDL.
Trang 3Lê đình Thanh, Công nghệ ASP.NET
Kiến trúc web ựộng
Web ựộng với CSDL
CSDL
Web Server
Web
Browser
Database Provider
Trang 4Lê đình Thanh, Công nghệ ASP.NET
Công nghệ phát triển Web (ựộng)
Ớ đa dạng và không ngừng ựược phát triển.
ASP.NET
Cơ bản về NET Framework
và ASP.NET
Trang 5Lê đình Thanh, Công nghệ ASP.NET
Kiến trúc Net Framework
Base Class Library Common Language Specification
Common Language Runtime
ADO.NET: Data and XML
ASP.NET: Web Services
and Web Forms
Windows Forms Visual Basic ệ C++ C# JScript ệ Ầ
Assembly
IL Code
Assembly
IL Code Assembly
IL Code
Operating System Services
Common Language Runtime
Trang 6Lê đình Thanh, Công nghệ ASP.NET
Thực thi chương trình NET
Trang 7Lê đình Thanh, Công nghệ ASP.NET
Thực thi ngôn ngữ chung
Trang 8Lê đình Thanh, Công nghệ ASP.NET
Trang 9Lê đình Thanh, Công nghệ ASP.NET
ASP.NET Ờ đặc ựiểm
Ớ Hướng ựối tượng: Mỗi trang bao gồm hai
ựối tượng kế thừa nhau.
Ớ Tách mã giao diện (HTML) với mã xử lý
Ớ ⇒ Dễ viết chương trình, tìm lỗi.
Ớ ⇒ Giấu ựược mã (mã ựược dịch thành
DLL).
đối tượng Request
Ớ đối tượng Request nắm giữ HTTP request và cung cấp các phương thức xử lý HTTP request.
Ớ Mỗi trang aspx ựều chứa ựối tượng Request như một thuộc tắnh ựược kế thừa.
Ớ Lấy ựối tượng Request bằng lệnh this.Request
Ớ Hai thuộc tắnh và phương thức quan trọng nhất của ựối tượng Request là:
Ờ Lấy URL của tài liệu ựược yêu cầu:
this.Request.RawURL
Ờ Lấy giá trị các tham số ựược truyền cùng URL:
this.Request.QueryString.Get(Ộten_thamsoỢ);
Trang 10Lê đình Thanh, Công nghệ ASP.NET
Request Ờ Nhận giá trị tham số (1)
Ớ Giả sử các tham số ựược truyền cùng URL là
Request Ờ Nhận giá trị tham số (2)
Ớ Giả sử các tham số trên form thuộc trang
Nhap.aspx ựược truyền cùng URL theo phương thức POST là
Ớ <form action = ỘKiemtra.aspxỢ>
Ờ <input type = ỘtextỢ name = ỘhotenỢ width = Ộ200Ợ> Ờ <input type = submit value = ỘChap nhanỢ>
Trang 11Lê đình Thanh, Công nghệ ASP.NET
đối tượng Response
Ớ đối tượng Response ựược sử dụng ựể sinh ra
HTTP response
Ớ Mỗi trang aspx ựều chứa ựối tượng Response như một thuộc tắnh ựược kế thừa.
Ớ Lấy ựối tượng Response bằng lệnh this.Response
Ớ Hai phương thức quan trọng nhất của ựối tượng Response là:
Ờ Viết ra nội dung trang HTML:
và truyền hai tham số có tên là cid, id cùng giá trị các tham số tương ứng là 10 và 123.
Trang 12Lê đình Thanh, Công nghệ ASP.NET
ASP.NET Ờ đặc ựiểm (2)
Ớ Các ựiều khiển phắa Server (server-side controls).
Ờ được lưu trữ và quản lý trên Server
Ờ Khi server xử lý, mỗi ựiều khiển phắa server sinh ra một
ựiều khiển HTML (ựiều khiển phắa client) rồi ựược gửi
sang client.
Ờ Vắ dụ:
Ớ <asp:Button id="Button1" runat="server" Text="Tìm
kiếm"></asp:Button>
Khi ựược xử lý sinh ra ựiều khiển nút bấm HTML
Ớ <input type = ỘbuttonỢ name = ỘButton1Ợ id = ỘButton1Ợ value
= ỘTìm kiếmỢ>
ASP.NET Ờ đặc ựiểm (3)
Ớ Các ựiều khiển phắa Server (server-side controls)
Ờ AutoPostBack cho từng ựiều khiển: Tự ựộng ựệ trình form chứa lên server khi giá trị của ựiều khiển thay ựổi Khi form ựược tự ựộng ựệ trình lên server, server xử lý rồi lại tự ựộng gửi trang trở lại client.
Ớ <asp:CheckBox id="CheckBox1" runat="server"
AutoPostBack="True" ></asp:CheckBox>
Ờ để kiểm tra trang ựược tải (load) lần ựầu hay do
PostBack (gửi lại), chúng ta sử dụng thuộc tắnh
IsPostBack của trang
Ớ Nếu IsPostBack == false, trang ựược tải lần ựầu
Ớ Ngược lại, trang ựược gửi lại.
Trang 13Lê đình Thanh, Công nghệ ASP.NET
phắa server có AutoPostBack = true
Yêu cầu lần thứ nhất
Trang kết quả xử lý
Tương tác với
ựiều khiển
trên giao diện
Trang với trạng thái
ựiều khiển ựã thay ựổi
lập trình phắa server ( Dễ cài ựặt )
Ớ Tuy nhiên, client không phát huy hết tác dụng xử
lý (hạn chế )
Ớ Trang liên tục ựược chuyển ựi, chuyển lại giữa client và server => truyền thông tốn kém + không thân thiện với người dùng ( nháy, không liên tục ).
Trang 14Lê đình Thanh, Công nghệ ASP.NET
Thuộc tắnh trang IsPostBack
Ớ IsPostBack là thuộc tắnh của
System.Web.UI.Page là lớp cớ sở của bất
kỳ trang nào
Ớ IsPostBack = false: trang ựược tải lần ựầu
Ớ IsPostBack = true: trang ựược tải lại ở các lần hai, ba, Ầ
Ớ Thường sử dụng IsPostBack trong phương thức Page_Load ựể khởi tạo trạng thái ban
ựầu của trang.
Sự kiện Page_Load
Ớ Load là sự kiện ựược phát sinh khi trang ựược tải
về (load)
Ớ Ở mỗi trang, phương thức
private void Page_Load(object sender, System.EventArgs e)
tự ựộng ựược gọi ựể ựáp ứng sự kiện Load.
Trang 15Lê đình Thanh, Công nghệ ASP.NET
Tạo giao diện trong ASP.NET
Ớ Sử dụng các ựiều khiển phắa server, bắt sự
trình, chương trình hoạt ựộng nặng nề )
Ờ điều khiển hiển thị
Ờ điều khiển nhập liệu
Ờ điều khiển kiểm tra
Ớ Hoặc sử dụng các ựiều khiển phắa client
chương trình hoạt ựộng nhẹ nhàng )
Các ựiều khiển phắa server
Ớ điều khiển nội tại
Ờ ánh xạ trực tiếp ựến các phần tử HTML ựơn giản
Ớ điều khiển danh sách
Ờ trình bày các mục dữ liệu ở dạng danh sách
Ớ điều khiển ựa năng
Ờ tạo các thành phần ựiều khiển có giao diện phức tạp
Ớ điều khiển kiểm tra
Ờ kiểm tra sự hợp thức trong nhập liệu Khi thực thi, mỗi ựiều khiển phắa server sinh ra
một/một số phần tử HTML tương ứng + javascript kèm theo (nếu có)
Trang 16Lê đình Thanh, Công nghệ ASP.NET
điều khiển phắa server và phần tử HTML+javascript do chúng sinh ra
1 <asp:Button id=ỘmyidỢ text=ỘButton textỢ
3 <asp:ImageButton id= ỖsomeIdỖ
ImageURL=Ợimage file nameỢ OnClick=Ợ
Lê đình Thanh, Công nghệ ASP.NET
7 <asp:CheckBox id =ỢsomeIdỢ Text=Ợsome
GroupName=Ợgroup nameỢ Text=Ợsome
textỢ Checked = ỘTrue/FalseỢ
Trang 17Lê đình Thanh, Công nghệ ASP.NET
.Items.Add(ListItem item) Ờ thêm mục mới
.Items.Add(ỘvalueỢ, ỘtextỢ) Ờ thêm mục mới
.SelectedItem.Text - tên của mục ựược chọn
.SelectedValue Ờ giá trị của mục ựược chọn
.SelectedName Ờ tên của mục ựược chọn
10 <asp:Image id = Ộsome idỢ ImageURL=Ợimage
file nameỢ AlternateText=Ợtitle textỢ
runat=ỢserverỢ />
<image src=Ợimage file nameỢ title=Ợtitle textỢ>
11 <asp:Label Text=Ợlabel textỢ runat=ỢserverỢ <span>label text </span>
.SelectedValue Ờ giá trị của mục ựược chọn
.SelectedName Ờ tên của mục ựược chọn
10 <asp:Image id = Ộsome idỢ ImageURL=Ợimage
file nameỢ AlternateText=Ợtitle textỢ
<span>label text </span>
12 <asp:Panel id=ỢsomeIdỢ runat=ỢserverỢ /> <div>label text </div>
<ImageURL>image file </ImageURL>
<TargetUrl> url </TargetUrl>
<AlternateText> title text </AlternateText>
<Keyword>a word </Keyword>
<Captain>some text</Captain>
</Ad>
<Ad>
<ImageURL>image file </ImageURL>
<TargetUrl> url </TargetUrl>
Nhiều phần tử HTML và hàm javacsript
ựược tạo
Trang 18Lê đình Thanh, Công nghệ ASP.NET
Lê đình Thanh, Tạo trang web ựộng
<ImageURL>image file </ImageURL>
<TargetUrl> url </TargetUrl>
<AlternateText> title text </AlternateText>
<Keyword>a word </Keyword>
<Captain>some text</Captain>
</Ad>
<Ad>
<ImageURL>image file </ImageURL>
<TargetUrl> url </TargetUrl>
<AlternateText> title text </AlternateText>
<Keyword>a word </Keyword>
<ImageURL>image file </ImageURL>
<TargetUrl> url </TargetUrl>
<AlternateText> title text </AlternateText>
<Keyword>a word </Keyword>
<Captain>some text</Captain>
</Ad>
<Ad>
<ImageURL>image file </ImageURL>
<TargetUrl> url </TargetUrl>
<AlternateText> title text </AlternateText>
<Keyword>a word </Keyword>
Trang 19Lê đình Thanh, Công nghệ ASP.NET
Ớ ASP.NET có các ựiều khiển chuyên dùng
ựể kiểm tra nhập liệu.
Ờ Mỗi ựiều khiển kiểm tra nhập liệu ( trừ ựiều khiển
dữ liệu ựược nhập vào một ựiều khiển nhập liệu
chắ nào ựó ( buộc phải nhập, dữ liệu nhập phải nằm trong ựoạn nào ựó, dữ liệu nhập không thể là chữ, Ầ)
điều khiển nhập liệu
Trang 20Lê đình Thanh, Công nghệ ASP.NET
điều khiển kiểm tra nhập liệu
Dữ liệu nhập phải nằm trong khoảng nào ựó
Dữ liệu nhập phải thỏa quy tắc miêu tả/
cú pháp nào ựó
Tự ựịnh nghĩa hàm kiểm tra
errorMessage = Ộ Thong bao loi neu khong nhap Ợ
display = Ộstatic|dynamic|noneỢ runat=server>
</asp: RequiredFieldValidator>
Trang 21Lê đình Thanh, Công nghệ ASP.NET
errorMessage = Ộ Thong bao loi neu bieu thuc so sanh sai Ợ
display = Ộstatic|dynamic|noneỢ runat=server>
errorMessage = Ộ Thông báo lỗi nếu giá trị nhập ngoài khoảng Ợ
display = Ộstatic|dynamic|noneỢ runat=server>
</asp: Range Validator >
Trang 22Lê đình Thanh, Công nghệ ASP.NET
validationExpression = Ộ Biểu thức mô tả ựịnh dạng dữ
khong nhap Ợ display =
Ớ Kiểm tra dữ liệu ựược nhập bằng một hàm tự ựịnh nghĩa
<asp: CustomValidator id=ỘmyREVỢ
controlToValidate = Ộ id_dieu_khien_duoc_kiem_tra Ợ
onServerValidationFunction = ỘHàm kiểm tra trên Server, bằng C# hay VB.NETỢ
onClientValidationFunction = Ộ Hàm kiểm tra trên Client, bằng JavaScript Ợ errorMessage = Ộ Thong bao loi neu khong nhap Ợ
display = Ộstatic|dynamic|noneỢ runat=server>
</asp: CustomValidator >
Trang 23Lê đình Thanh, Công nghệ ASP.NET
Thuộc tắnh Page.isValid
Ớ Ban ựầu Page.isValid = true
Ớ Nếu các ựiều khiển kiểm tra bắt ựược lỗi, chúng sẽ ựặt
Trang 24Lê đình Thanh, Công nghệ ASP.NET
Ớ System.Data.Odbc Các lớp làm việc với
CSDL thông qua ODBC
Ớ System.Data.OleDb Các lớp làm việc với
CSDL thông qua OLEDB
Ớ System.Data.SqlClient Các lớp làm việc với CSDL SQL Server
Ớ System.Data.SqlTypes Các lớp ựịnh kiểu dữ liệu SQL
Trang 25Lê đình Thanh, Công nghệ ASP.NET
Publishers
Trang 26Lê đình Thanh, Công nghệ ASP.NET
Ớ String sConn = Ộ server =ATTA; database =Daotao; uid =sa; pwd =sa;Ộ;
Ớ SqlConnection m_Conn = new SqlConnection(sConn);
Ớ m_Conn.Open();
Ớ Dùng _Connection ựể kết nối CSDL
Ớ đặt thuộc tắnh _Command.Connection là kết nối ựã mở
Ớ đặt kiểu lệnh và nội dung lệnh cho
_Command CommandType và _Command CommandText
Ớ Tạo các tham số _Parameter và thêm vào
ựối tượng _Command
Ớ Thực thi _Command ExecuteNonQuery()
Trang 27Lê đình Thanh, Công nghệ ASP.NET
Quy trình cập nhật dữ liệu Ờ Vắ dụ
String sConn = Ộserver=ATTA; database=Daotao ;uid=sa ;pwd=sa;Ợ;
SqlConnection m_Conn = new SqlConnection(sConn);
Ớ đặt thuộc tắnh _Command.Connection là kết nối ựã mở.
Ớ đặt kiểu lệnh và nội dung lệnh cho _Command
CommandType và _Command CommandText.
Ớ Tạo các tham số _Parameter và thêm vào ựối tượng
_Command.
Ớ Tạo ựối tượng _DataAdapter và chỉ ựịnh thuộc tắnh
.SelectCommand là ựối tượng _Command.
Ớ Gọi _DataAdapter.Fill() ựể ựiền kết quả truy vấn
Trang 28Lê đình Thanh, Công nghệ ASP.NET
Quy trình truy vấn dữ liệu Ờ Vắ dụ
String sConn = Ộserver=ATTA; database=Daotao ;uid=sa ;pwd=sa;Ợ;
SqlConnection m_Conn = new SqlConnection(sConn);
SqlDataAdapter da= new SqlDataAdapter(m_Cmd);
DataSet m_DataSet = new DataSet();
da.Fill(m_DataSet, "Sinhvien");
DataTable m_Sinhvien = new DataTable();
m_Sinhvien = m_DataSet.Tables[0];
m_MaSinhvien = m_Sinhvien.Rows[m_BanghiHientai]["maSinhvien"].ToString();m_HoSinhvien = m_Sinhvien.Rows[m_BanghiHientai]["hoSinhvien"].ToString();m_TenSinhvien = m_Sinhvien.Rows[m_BanghiHientai]["tenSinhvien"].ToString();m_Ngaysinh =
Convert.ToDateTime(m_Sinhvien.Rows[m_BanghiHientai]["ngaysinh"].ToString())
DataReader
Ớ Khi chỉ cần mở một truy vấn, duyệt một lần kết quả truy vấn mà không phải tạo nhiều DataTale, chúng ta có thể sử dụng DataReader
Ớ DataReader chứa các bản ghi dưới dạng danh sách
Ờ Thực thi câu lệnh và ựưa dữ liệu vào
Trang 29Lê đình Thanh, Công nghệ ASP.NET
Trang 30Lê đình Thanh, Công nghệ ASP.NET
Lấy dữ liệu từ tệp XML
Ớ Mở tệp tài liệu XML
FileStream fs = new FileStream(Ộabc.xmlỢ,
FileMode.Open, FileAccess.Read);
StreamReader srd = new StreamReader(fs);
Ớ đọc tài liệu vào DataSet
DataSet ds = new DataSet();
ựọc nguồn dữ liệu và
tự ựộng sinh mã giao diện
Trang 31Lê đình Thanh, Công nghệ ASP.NET
Ràng buộc dữ liệu Ờ Data Bind
đ iều khiển giao diện
(DropDownList CheckBoxList RadioButtonList DataList DataGrid Repeater Template)
Ớ Ý tưởng: Gắn một tập dữ liệu
ựược chứa ở một nguồn nào ựó
(mảng, danh sách, bảng dữ
liệu, Ầ) vào một ựiều khiển
giao diện, ASP.NET tự ựộng
xử lý các khâu còn lại ựể hiển
DropDownList1 DataSource = m_Table;
DropDownList1 DataTextField = "tenLop";
DropDownList1 DataValueField = "maLop";
DropDownList1 DataBind() ;
%>
<asp:DropDownList id=ỘDropDownList1Ợ runat=server/>
this.Response.Write(DropDownList1.SelectedItem.Value);this.Response.Write(DropDownList1.SelectedItems.Text);
Trang 32Lê đình Thanh, Công nghệ ASP.NET
CheckBoxList1 DataSource = m_Table;
CheckBoxList1 DataTextField = "tenLop";
CheckBoxList1 DataValueField = "maLop";
this.Response.Write(CheckBoxList1.Items[i].Value);this.Response.Write(CheckBoxList1.Items[i].Text);}
RadioButtonList1 DataSource = m_Table;
RadioButtonList1 DataTextField = "tenLop";
RadioButtonList1 DataValueField = "maLop";
this.Response.Write(RadioButtonList1.Items[i].Value);this.Response.Write(RadioButtonList1.Items[i].Text);}
Trang 33Lê đình Thanh, Công nghệ ASP.NET
Mẫu hiển thị - Template
ựiều khiển giao diện
và ràng buộc dữ liệu DataGrid, DataList, Repeater ựể các ựiều khiển này hiển thị dữ liệu theo mẫu
Trang 34Lê đình Thanh, Công nghệ ASP.NET
DataList
Ớ Ràng buộc dữ liệu và hiển thị dữ liệu ựược ràng buộc dưới dạng danh sách.
<asp:DataList id="DataList1" runat=ỘserverỢ
RepeatDirection = Horizontal RepeatColumns = 4>
Lưới dữ liệu Ờ DataGrid
Ớ Dùng ựể ràng buộc dữ liệu và hiển thị dưới dạng bảng
<asp:DataGrid id=Ộdtgrid1Ợ GridLine=ỘNoneỢ
Trang 35Lê đình Thanh, Công nghệ ASP.NET
Ớ để thay ựổi các cột như tiêu ựề các cột, thứ tự hiển thị các cột, chúng ta tắt chế ựộ tự ựộng sinh cột của DataGrid và dùng <asp:BoundColumn> của DataGrid ựể ựịnh nghĩa cột của bảng.
<asp:DataGrid id=Ộdtgrid1Ợ runat=ỘserverỢ
Ớ Theo mặc ựịnh, dữ liệu ựược hiển thị ở dạng văn bản.
Ớ Sử dụng mẫu cột <asp:TemplateColumn> và <_Template>
ựể thay ựổi cách hiển thị nội dung của cột.
<asp:DataGrid id=ỘMyGridỢ AutoGenerateColumns = ỘfalseỖ runat=ỘserverỢ>
Trang 36Lê đình Thanh, Công nghệ ASP.NET
Ớ Dùng <asp:EditCommandColumn> ựể ựịnh nhãn cho các nút lệnh
Trang 37Lê đình Thanh, Công nghệ ASP.NET
Ớ Chỉ ựịnh các hàm sự kiện cập nhật dữ liệu
< asp:DataGrid id=ỘMyGridỢ runat=ỘserverỢ
OnEditCommand = Ộ Ham_Xuly_Khi_Chon_Suadoi Ợ OnUpdateCommand = ỘHam_Xuly_Khi_Chon_CapnhatỢ OnCancelCommand = ỘHam_Xuly_Khi_Ch_Bo_CapnhatỢ DataKeyField = ỘTruong_Khoa_Cac_Banghi_DulieuỢ AutoGenerateColumn = ỘfalseỢ>
Ớ Thiết kế hàm ựể ràng buộc dữ liệu vào DataGrid,
vắ dụ hàm này tên là BindGrid().
Trang 38Lê đình Thanh, Công nghệ ASP.NET
MyGrid.DataKeys[e.Item.ItemIndex] là khóa của bản ghi ựược sửa.
BindGrid(); //ràng buộc lại dữ liệu vào khung lưới }
Ớ Có thể sử dụng <ButtonColumn> tạo nút chọn xóa.
< asp:DataGrid id=ỘMyGridỢ runat=ỘserverỢ OnDeleteCommand =