Tổng quan về ASP.NET
Trang 1ASP NET
Vũ Song Tùng
Trang 4Tổng quan về ASP NET
• ASP – Active Server Pages
• ASP NET – nền tảng phát triển ứng dụng web (web
application framework) được xây dựng bởi Microsoft
• Cho phép người lập trình tạo ra các trang web động, ứng
dụng web và dịch vụ web
• ASP NET được biên dịch dưới dạng Common Language
Runtime (CLR), cho phép viết bằng bất kz ngôn ngữ NET nào
• Mỗi Web Page (hay Web form) trong ASP NET được trình bày
bằng một file aspx
Trang 5Tổng quan về ASP NET
<% @ Page Language ="C#" %> <! Page directive >
< html >< body >
< form id ="form1" runat ="server">
Nhập dữ liệu: <! Static text >
< asp : TextBox id ="txtName" runat ="server" /> <! Web control tag >
< input type ="button" value ="Gửi" /> <! Html control tag >
</ form >
</ body ></ html >
< script runat ="server"> <! Server-Side code >
void Page_Load( object sender, EventArgs e) {
txtName.Text = "Tổng quan" ;
}
</ script > <! Client-Side code >
Trang 6Tổng quan về ASP NET
• Các thành phần Static Text, Html Control Tag, Client-Side
Code tương tự như trong các trang html
• Page Directives chỉ ra tập hợp các thuộc tính của page, dùng trong quá trình dịch page của server
• Web Control Tag tạo các control từ server, chỉ có trong
ASP.NET
• Server-Side Code – đoạn mã được chạy từ server
Những thành phần do server xử l{ (server-side) đều có thuộc tính runat="server"
Trang 7Tổng quan về ASP NET
• Server-Side Code có thể được viết riêng trong các file mã
nguồn như các ứng dụng Window form
• Tăng tính linh hoạt của ứng dụng, đặc biệt khi cần liên kết dữ liệu
• Có thể tận dụng tính kế thừa của OOP
• Dùng directive @Page để xác định file mã nguồn và tên lớp của Page
Trang 8Tổng quan về ASP NET
Web server
Request Response
ASPX Engine
Instantiate, Process and Render
.html asp aspx xml
Compile and Generate Page Class (nếu cần)
Trang 9Tổng quan về ASP NET
• Các bước xử l{ file
lập đối tượng Response
Trang 10Tổng quan về ASP NET
• Các sự kiện của một Page
Trang 11Tổng quan về ASP NET
• Ví dụ sự kiện Page_Load
<html><form id="Form1" runat="server">
<asp:Button runat="server" Text="Reload" />
</form></html>
<script runat="server">
Trang 12Tổng quan về ASP NET
• Tạo project
– Mở Visual Studio NET 2010
– Chọn File\New\Project … (Ctrl+Shift+N)
– Trên cửa sổ “New Project”
1 Chọn Visual C#\Web trong “Installed Templates”
2 Chọn ASP NET Web Application trong danh mục template
3 Nhập tên của project vào ô “Name”
4 Nhấn “OK”
Trang 13Tổng quan về ASP NET
1
2
3
Trang 14Tổng quan về ASP NET
• Hệ thống file của project
Trang 15Tổng quan về ASP NET
• Chạy ứng dụng
– Chọn Debug\Start Without Debugging (Ctrl + F5)
– Hoặc Debug\Start Debugging (F5) để chạy gỡ lỗi
• Đặt các điểm tạm dừng (BreakPoint)
• Theo dõi các đối tượng bằng các cửa sổ Watch
– Ứng dụng bắt đầu từ trang Default.aspx (nếu file hiện hành không phải là một file aspx hoặc aspx.cs nào khác)
– Thứ tự các hàm được gọi
• Global.Application_Start
• Global.Session_Start
• _Default.Page_Load
Trang 16Tổng quan về ASP NET
Site.Master
< asp : Menu ID="NavigationMenu" >
< Items >
< asp : MenuItem NavigateUrl="~/Default.aspx"
Text="Home"/>
< asp : MenuItem NavigateUrl="~/About.aspx"
Text="About"/>
</ Items >
</ asp : Menu >
Trang 17Tổng quan về ASP NET
• Sử dụng Solution Explorer
– Mở một file
– Thêm một thành phần vào project
– Xóa hoặc loại bỏ một thành phần ra khỏi project
– Di chuyển các file giữa các thư mục
Chọn menu View\Solution Explorer (Ctrl + W, S) để kích hoạt Solution
Explorer
Trang 18Tổng quan về ASP NET
• Thêm một thành phần vào project (từ menu Project hoặc
nhấn chuột phải vào một thư mục trong Solution Explorer)
– Web Form using Master Page
– Web User Control
– Master Page
– v v…
Trang 19Tổng quan về ASP NET
• Thiết kế trang web bằng giao diện “Source”
Trang 20Tổng quan về ASP NET
• Thiết kế trang web bằng giao diện “Design”
Trang 21Tổng quan về ASP NET
• Tạo hàm xử l{ sự kiện nhấn “button1”
trong file aspx
– Chọn button1 trong giao diện “Design”
– Nháy đúp chuột trái vào sự kiện “Click”
trong danh sách sự kiện ở cửa sổ
Trang 22Tổng quan về ASP NET
• Tạo hàm xử l{ sự kiện nhấn “button1” trong file aspx.cs
– Tạo hàm mới
– Hoặc ủy quyền
protected void Page_Load( object sender, EventArgs e) {
Trang 24ASP NET namespaces
• Sự khoanh vùng các class khiến việc tìm kiếm và sử dụng
chúng trở nên dễ dàng
• Mỗi namespace miêu tả chính xác duy nhất một khái niệm
• Một namespace có thể bao gồm nhiều subnamespace
Trang 25ASP NET namespaces
• Sử dụng namespace trong file aspx
• Sử dụng namespace trong mã nguồn
using System.Web.UI.WebControls;
using System.Data;
protected void Page_Load(object sender, EventArgs e)
<% @ Import Namespace ="System.Data" %>
Trang 26ASP NET namespaces
• Định nghĩa các kiểu biến đơn
Single Số dấu phảy động Số dấu phảy động 4 byte (System.Single)
Double Số dấu phảy động Số dấu phảy động 8 byte (System.Double)
Decimal Số dấu phảy động Số dấu phảy động 12 byte (System.Decimal)
Trang 27ASP NET namespaces
• Các subnamespace chính
Namespace Mô tả
Collections Chứa các container
Data Chứa các class làm việc với cơ sở dữ liệu
Web Chứa các class phục vụ cho việc xây dựng giao diện
Xml Chứa các class xử lý các file XML
Trang 28ASP NET namespaces
• Các class chính
ArrayList Danh sách động của các đối tượng
SortedList Danh sách được sắp xếp theo giá trị các khóa
BitArray Mảng các giá trị true hoặc false
HashTable Bảng băm dùng cho các ứng dụng có tính chất từ điển
Queue Cấu trúc dữ liệu kiểu FIFO
Stack Cấu trúc dữ liệu kiểu LIFO
Trang 29ASP NET namespaces
• Sử dụng ArrayList
protected void Page_Load(object sender, EventArgs e)
{
dataGrid1.DataSource = lst;
dataGrid1.DataBind();
Trang 30ASP NET namespaces
Trang 31ASP NET namespaces
< asp : DataGrid ID ="dataGrid1" runat ="server"
AutoGenerateColumns ="false" Width ="200px">
< HeaderStyle BackColor ="WhiteSmoke" Height = "25px"/>
< Columns >
< asp : BoundColumn DataField ="Name"
HeaderText ="Họ tên" />
Trang 32ASP NET namespaces
• Chứa các class làm việc với cơ sở dữ liệu
IDbConnection Interface mô tả các phương thức kết nối cơ sở dữ liệu
IDbCommand Interface mô tả một câu lệnh SQL
IDataParameter Interface mô tả tham số của một Command
IDataReader Interface mô tả các thao tác đọc dữ liệu
IDataAdapter Interface mô tả các phương thức cập nhật dữ liệu
Trang 33ASP NET namespaces
"select Name from Person", strConn);
dataAdapter.Fill(ds);
Trang 34ASP NET namespaces
• Chứa các class hỗ trợ đọc/ghi tài liệu XML
XmlDocument Tài liệu XML
XmlReader Lớp trừu tượng mô tả các thao tác đọc file XML
XmlWriter Lớp trừu tượng mô tả các thao tác ghi file XML
Trang 35ASP NET namespaces
Trang 36ASP NET namespaces
dataGrid1.DataSource = lst;
dataGrid1.DataBind();
}
Trang 38ASP Server Controls
• Định nghĩa trong System.Web.UI.HtmlControls
• Mặc định là các control phía client
System.Web.UI HtmlControls HtmlInputControls
HtmlInputButton HtmlInputCheckBox HtmlInputFile HtmlInputHidden HtmlInputImage HtmlInputRadioButton HtmlInputText
HtmlContainerControls
HtmlAnchor HtmlButton HtmlForm HtmlSelect HtmlTable HtmlTextArea HtmlGenericControl
HtmlImage
Trang 39ASP Server Controls
• HtmlContainerControls
– Bao gồm nhiều đối tượng (VD HtmlButton có thể chứa HtmlImage) – Một vài control cơ bản
HtmlSelect DropdownList hoặc ComboBox <select>
HtmlTable Bảng gồm các hàng và các cột <table>
HtmlTextArea Ô nhập text gồm nhiều dòng <textarea>
Trang 40ASP Server Controls
• HtmlContainerControls – HtmlAnchor
id ="ProgrammaticID" và gán link cho thuộc tính href
< a href ="URL"
target ="LinkedContentFrameOrWindow"
title ="TitleDisplayedByBrowser">Caption Of Link</ a >
< a href ="About.aspx" target ="_blank" title ="go to About">
About us
</ a >
Trang 41ASP Server Controls
• HtmlContainerControls – HtmlSelect
size ="1" , HtmlSelect làm việc như một ComboBox, các giá trị lớn hơn 1 sẽ khiến nó làm việc như một ListBox
< select id ="ProgrammaticID" size ="NumberOfDisplayedItems"> < option >CaptionOfItem</ option >
</ select >
< select id ="Select1" size ="2">
Trang 42ASP Server Controls
align="Alignment" | "center" | "right"
bgcolor="BackgroundColor" border="BorderWidthInPixels"
Trang 43ASP Server Controls
Trang 44ASP Server Controls
• HtmlInputControls
< input id ="ProgrammaticID"
type ="ControlType" />
ControlType Các thuộc tính riêng
Button, Reset, Submit Value – caption của Button
CheckBox, Radio Checked – trạng thái chọn
File
Text, Password, Hidden MaxLength – độ dài lớn nhất của xâu
Value – nội dung của TextBox
Trang 45ASP Server Controls
• Định nghĩa trong System.Web.UI.WebControls
• Là các control phía server
System.Web.UI WebControls Basic Web Controls
Label, TextBox CheckBox, RadioButton Button, LinkButton, ImageButton HyperLink
Validation Controls RequiredFieldValidator RegularExpressionValidator CompareValidator RangeValidator CustomValidator ValidationSummary
Databound Controls
CheckedBoxList RadioButtonList DropDownList ListBox DataGrid DataList
Trang 46ASP Server Controls
Trang 47ASP Server Controls
• Sử dụng Basic Web Controls
< asp : Label runat ="server" Text ="Trả lời các câu hỏi sau"
Font-Bold ="true" Font-Size ="1.5em" />
< br />< br /> 1 Những control nào sau đây không thuộc nhóm Databound Controls?
< br />< asp : CheckBox runat ="server" ID ="checkBox1" Text ="ListBox" />
< br />< asp : CheckBox runat ="server" ID ="checkBox2" Text ="DropDownList" />
< br />< asp : CheckBox runat ="server" ID ="checkBox3" Text ="TextBox" />
< br />< asp : CheckBox runat ="server" ID ="checkBox4" Text ="CheckBox" />
< br />< br /> 2 Chọn thuộc tính để Page được load lại khi thay đổi trạng thái của RadioButton?
< br />< asp : RadioButton runat ="server" ID ="radioButton1" GroupName ="Question2" />
< br />< asp : RadioButton runat ="server" ID ="radioButton2" GroupName ="Question2" />
< br />< asp : RadioButton runat ="server" ID ="radioButton3" GroupName ="Question2" />
Trang 48ASP Server Controls
• Sử dụng Basic Web Controls
protected void Page_Load( object sender, EventArgs e) {
if (textBox1.Text.ToUpper() == "TEXT" ) point++;
label1.Text = string Format( "Trả lời đúng {0}/3 câu hỏi" , point); };
}
Trang 49ASP Server Controls
• Validation Controls
– Dùng để kiểm tra dữ liệu được nhập vào một control khác
RequiredFieldValidator Kiểm tra dữ liệu khác rỗng
RegularExpression Validator Kiểm tra dữ liệu theo mẫu cho trước
CompareValidator Kiểm tra tương quan giữa dữ liệu với giá trị cho
trước
CustomValidator Cho phép phát triển điều kiện cần kiểm tra
Trang 50ASP Server Controls
Trang 51ASP Server Controls
• Sử dụng Validation Controls
<asp:Label ID="Label1" runat="server" Text="Thông tin dự tuyển"
Font-Bold="true" Font-Size="1.5em" />
<table cellspacing="10px">
<tr><td align="right">Mã dự tuyển :</td>
<td><asp:TextBox ID="txtMaDuTuyen" runat="server" />
<asp:RegularExpressionValidator id="validTxtMaDuTuyen“ runat="server“
controlToValidate="txtMaDuTuyen"
errorMessage="Mã dự tuyển phải gồm 3 đến 5 chữ số“
display="static"
Trang 52ASP Server Controls
• Sử dụng Validation Controls
<tr><td align="right">Họ và tên :</td>
<td><asp:TextBox ID="txtName" runat="server" />
<asp:RequiredFieldValidator id="validTxtName" runat="server"
controlToValidate="txtName"
errorMessage="Bắt buộc nhập họ tên" display="static">*
</asp:RequiredFieldValidator>
</td></tr>
<tr><td align="right">Tuổi :</td>
<td><asp:TextBox ID="txtTuoi" runat="server" />
<asp:RangeValidator id="validTxtTuoi" runat="server"
controlToValidate="txtTuoi"
errorMessage="Tuổi phải từ 18 đến 45" display="static"
type="Integer" minimumValue="18" maximumValue="45">*
</asp:RangeValidator>
</td></tr>
Trang 53ASP Server Controls
• Sử dụng Validation Controls
<tr><td align="right">Trình độ :</td>
<td><asp:TextBox ID="txtTrinhDo" runat="server" />
<asp:CompareValidator id="validTxtTrinhDo" runat="server"
controlToValidate="txtTrinhDo"
errorMessage="Trình độ phải lớn hơn B" display="static"
type="String" Operator="GreaterThan" ValueToCompare="B">*
Trang 54ASP Server Controls
Trang 55ASP Server Controls
• Sử dụng CheckBoxList và RadioButtonList Controls
< asp : Label ID ="Label1" runat ="server" Text ="Trả lời các câu hỏi sau"
Font-Bold ="true" Font-Size ="1.5em" />
< br />< br /> 1 Những control nào sau đây không thuộc nhóm Databound Controls?
< br />< asp : CheckBoxList runat ="server" ID ="checkBoxList1">
< asp : ListItem Text ="ListBox" />
< asp : ListItem Text ="DropDownList" />
< asp : ListItem Text ="TextBox" Value ="1" />
< asp : ListItem Text ="CheckBox" Value ="1" />
</ asp : CheckBoxList >
< br /> 2 Chọn thuộc tính để Page được load lại khi thay đổi trạng thái của
Trang 56ASP Server Controls
• Sử dụng CheckBoxList và RadioButtonList Controls
<br />3 Thuộc tính nào dùng để đặt caption cho Button?
<asp:TextBox runat="server" ID="textBox1" Width="50px" />
<hr /><asp:Button runat="server" ID="button1" Text="Trả lời" />
<br /><br /><asp:Label runat="server" ID="label2" Font-Bold="true" />
{
foreach (ListItem item in listControl.Items)
return 1;
}
Trang 57ASP Server Controls
• Sử dụng CheckBoxList và RadioButtonList Controls
protected void Page_Load( object sender, EventArgs e)
{
if (!IsPostBack)
{
radioButtonList1.Items.Add( new ListItem( "runat=\"server\"" ));
radioButtonList1.Items.Add( new ListItem( "AutoPostBack=\"true\"" , "1" )); radioButtonList1.Items.Add( new ListItem( "AutoPostBack=\"false\"" ));