Tải bản đầy đủ (.doc) (29 trang)

ứng dụng asp.net and web applications - trang web bán điện thoại di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.22 MB, 29 trang )

Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
MỤC LỤC
1. GIỚI THIỆU TỔNG QUAN VỀ ASP.NET 3.5 3
1.1. ASP.NET là gì? 3
1.1.1. ASP.NET tích hợp với NET Framework 3
1.1.2. ASP.NET là đa ngôn ngữ 3
1.1.3. ASP.NET là hướng đối tượng (Object-Oriented) 3
1.1.4. ASP.NET được biên dịch 3
1.1.5. ASP.NET được lưu trữ trên máy bởi Common Language Runtime 4
1.1.6. ASP.NET dễ dàng triển khai và cấu hình 4
1.2. Các tính năng mới trong ASP.NET 3.5 4
1.2.1. ASP.NET AJAX 5
1.2.2. Các Control mới 5
1.2.3. LINQ 5
1.2.4. Các Assembly mới 5
1.2.5. ASP.NET Dynamic Data 5
1.3. Các loại file trong ASP.NET 6
2. Tổng quan về đề tài 6
2.1. Giới thiệu đề tài 6
2.2. Sơ đồ phân rã chức năng 7
2.3. Thiết kế cơ sở dữ liệu 7
3. Các công nghệ ứng dụng trong đề tài 8
3.1. State Management 8
3.2. Custom errors 9
3.3. Administrator Tool 9
3.4. Multi-Language 11
3.5. Validation 12
3.5.1. Giới thiệu Validation control 12
3.6. User Controls 13
3.7. Themes and Master Pages 13
3.7.1. Themes 13


Lớp 07T1 Nhóm 08 - 1 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
3.7.2. Master Page và chuyển hướng trang 15
3.8. Ado.net 18
3.9. Dataview 26
3.9.1. Gridview 26
3.9.2. Detailsview 26
3.9.3. Formview 27
3.9.4. Listview 28
TÀI LIỆU THAM KHẢO 29
Lớp 07T1 Nhóm 08 - 2 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
1. GIỚI THIỆU TỔNG QUAN VỀ ASP.NET 3.5
Bài này giới thiệu tổng quan về công nghệ ASP.NET 3.5 (Active Server Page).
ASP.NET là gì? Giới thiệu những tính năng mới của ASP.NET 3.5 sơ với ASP.NET
2.0. Cách tạo website trong Visual Studio 2008.
1.1. ASP.NET là gì?
Trước hết, tên đầy đủ của ASP.NET là Active Server Pages .NET (.NET ở đây
là .NET framework). Nói đơn giản thì ASP.NET là một công nghệ có tính cách mạng
dùng để phát triển các ứng dụng về mạng hiện nay cũng như trong tương lai. Bạn lưu ý
ở chổ ASP.NET là một phương pháp tổ chức hay khung tổ chức (framework) để thiết
lập các ứng dụng hết sức hùng mạnh cho mạng dựa trên CLR (Common Language
Runtime).
1.1.1. ASP.NET tích hợp với NET Framework
.NET Framework được chia thành bộ các tác vụ cho từng chức năng gồm các
lớp (class), các cấu trúc (structures), các giao diện (interfaces) và các lõi (core) thành
phần chương trình. Trước khi sử dụng thành phần nào bạn phải hiểu cơ bản về chức
năng, các tổ chức của nó. Mỗi một trong hàng nghàn các tầng lớp được nhóm theo
trình tự logic, thứ bậc được gọi là một namespace. Mỗi namespace cung cấp một tính
năng.

1.1.2. ASP.NET là đa ngôn ngữ
Để xây dựng một ứng dụng web chúng ta không chỉ chọn một ngôn ngữ mà có
thể chọn nhiều ngôn ngữ khác. Điều quan trọng là các ngôn ngữ chúng ta chọn mã của
nó dịch được ra mã IL. Điều đó có nghĩa là IL là ngôn ngữ của .NET và chỉ có CLR
nhận biết được IL.
1.1.3. ASP.NET là hướng đối tượng (Object-Oriented)
ASP.NET là ngôn ngữ lập trình hướng đối tượng sử dụng các ngôn ngữ .NET.
Nó cung cấp bộ các đối tượng nhỏ và thực sự là một tầng làm việt trên nguyên lý của
HTTP và HTML. Mã nguồn của chúng ta không được truy cập toàn bộ các đối tượng
trong .NET Framework nhưng có thể khai thác tất cả các quy ước của một môi trường
OOP (Object Oriented Programming). Chúng ta có tạo các lớp, giao diện, kế thừa các
lớp… Chúng ta có thể kiểm soát được các đối tượng trong chương trình như hiển thị
dữ liệu và các sự kiện của đối tượng.
1.1.4. ASP.NET được biên dịch
Một ứng dụng ASP.NET luôn luôn được biên dịch, nó không chạy bằng mã của
C# hoặc Visual Basic mà không được biên dịch trước. Một ứng dụng ASP.NET thực
sự được biên dịch thông qua 2 giai đoạn:
Lớp 07T1 Nhóm 08 - 3 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
Giai đoạn đầu tiên những các mã (code) bạn viết (C#, Visual Basic hoặc
ngôn ngữ .NET khác) được dịch bởi Microsoft Intermediate Language (MSIL).
Giai đoạn dịch này được dịch tự động khi trang wed đầu tiên yêu cầu. Chúng ta có thể
thực hiện dịch trước. Các tệp được dịch thành mã IL (Intermediate Language Code).
Giai đoạn tiếp theo được dịch trước khi trang Web được thực thi. Tại giai
đoạn này mã IL được dịch thành bản mã máy (Native Machine Code). Giai đoạn này
được gọi là Just-In-Time (JIT).
1.1.5. ASP.NET được lưu trữ trên máy bởi Common Language Runtime
Khía cạnh quang trọng nhất của công cụ ASP.NET là nó chạy trong môi trường
thời gian thực (Runtime) của CLR (Common Language Runtime). CLR là máy ảo
(virtual machine) trong Microsoft .NET, do có ngôn ngữ trung gian IL nên khi phát

triển ứng dụng trên .NET, chúng ta không bị phụ thuộc vào thiết bị, có nghĩa là theo
Microsoft nói thì ứng dụng .NET có thể chạy trên bất kỳ thiết bị nào có .NET
Framework. Tất cả các namespace, các ứng dụng, các lớp trong bộ .NET Framework
được gọi tắt là bộ quản lý mã. CLR cũng cung cấp các dịch vụ quan trọng khác như:
Quản lý bộ nhớ 
Thu nhặt rác 
Quản lý các tuyến 
Xử lý ngoại lệ 
An toàn 
1.1.6. ASP.NET dễ dàng triển khai và cấu hình
Mọi sự cài đặt .NET Framework đều cung cấp các lớp như nhau. Để triển khai
ứng dụng ASP.NET chúng ta chỉ cần sao chép các tập tin vào thư mục ảo trên máy chủ
(server) và máy chỉ chỉ cần có .NET Framework.
Việc cấu hình dễ dàng đơn giản không phụ thuộc vào IIS (Internet Information
Services). Cấu hình trong ASP.NET được đặt trong tệp web.config. Tệp web.config
được để cùng với thư mực chứa trang web của chúng ta. Tệp web.config không bao
giờ bị khóa, chúng ta có thể truy cập bất kỳ lúc nào, việc sửa tệp này hoàn toàn dễ
dạng vì chúng được lưu dưới dạng XML.
1.2. Các tính năng mới trong ASP.NET 3.5
Microsoft phát hành ASP.NET vào ngày 19 tháng 11 năm 2007 cùng với Visual
Stutio 2008. Đây là bước tiến hóa từ ASP.NET 2.0 tới ASP.NET 3.5. Nếu chúng ta
đang sử dụng ASP.NET 2.0 để sử dụng ASP.NET 3.5 chỉ cần cài đặt thêm các tính
năng mới của ASP.NET 3.5.
Lớp 07T1 Nhóm 08 - 4 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
1.2.1. ASP.NET AJAX
Trong ASP.NET 2.0, ASP.NET AJAX được cài đặt thêm vào. Tuy nhiên trong
ASP.NET 3.5, ASP.NET AJAX đã được tích hợp. vào trong .NET Framework, do đó
quá trình xây dựng giao diện người dùng được dễ dàng và trực quan. ASP.NET AJAX
Control Extenders đã được tích hợp ToolBox của Visual Studio 2008. Các tính năng

của ASP.NET AJAX sẽ được trình bày ở bài sau.
1.2.2. Các Control mới
Các control ListView và DataPager có thể dùng mới kiểu dữ liệu mới
LinqDataSource.
ListView linh hoạt hơn và có chứa toàn bộ tính năng của Gridview, Datagrid,
Repeater trong ASP.NET 2.0. Nó cung cấp các khả năng và chèn, xóa, sửa, sắp xếp,
phân trang. Chúng ta hoàn toàn định dạng được việc dữ liệu hiển thị trên ListView mà
không cần phải sử dụng thẻ <table>. Các Template trong ListView rất phong phú và
đa dạng. Datager cung cấp cho ListView trong việc phân trang.
1.2.3. LINQ
LINQ (Language Integrated Query) đưa ra khả năng lập trình mới trong
.NET. Giải pháp lập trình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp
SQL trực tiếp trong C# hay VB.NET, áp dụng cho tất cả các dạng dữ liệu từ đối tượng
đến Cơ sở dữ liệu quan hệ và XML.
ASP.NET LinqDataSource cho phép chúng ta có thể sử dụng LINQ để lọc
(filter), order và nhóm (group) dữ liệu trước khi binding vào List Control.
1.2.4. Các Assembly mới
System.Core.dll – Các implementation cho LINQ to Objects 
System.Data.Linq.dll - Các implementation cho LINQ to SQL 
System.Xml.Linq.dll - Các implementation cho LINQ to XML 
System.Data.DataSetExtensions.dll - Các the implementation cho LINQ to
DataSet
System.Web.Extensions.dll: Các implementation for ASP.NET AJAX 
1.2.5. ASP.NET Dynamic Data
ASP.NET Dynamic Data cung cấp một Framework cho phép chúng ta nhanh
chóng xây dựng một chức năng ứng dụng driver-data, dựa trên LINQ to SQL hay
Entity Framework. Nó cũng có thêm nhiều tính linh hoạt cho các DetailsView,
Lớp 07T1 Nhóm 08 - 5 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
FormView, GridView, ListView trong kiểm tra tính hợp lệ của dữ liệu, hoặc chỉnh sửa

lại các mẫu để thay đổi cách hiển thị dữ liệu.
1.3. Các loại file trong ASP.NET
Một số file cơ bản trong
ASP.NET
MIÊU TẢ
*.aspx Tệp này chứa toàn bộ giao diện người dùng,
các tùy chọn, các đoạn code ứng dụng. Đây là
một trong những trang web đầu tiên được bắt
đầu khi người sử dụng duyệt web.
*.cs Tệp này chứa các mã nguồn của C#
web.config Tệp tin dạng XML chứa cấu hình cho ứng
dụng ASP.NET. Nó bao gồm các cấu hình về
an ninh, quản lý trạng thái, quản lý bộ nhớ…
global.asax Chúng ta sử dụng tập tin này để khai báo các
biến toàn cục và phản ứng với các sự kiện toàn
cục.
2. Tổng quan về đề tài
2.1. Giới thiệu đề tài
Xây dựng trang web bán di động đáp ứng các yêu cầu: thông tin về các dòng
điện thoại, thông tin các phụ kiện kèm theo, xây dựng giỏ mua hàng cho người dùng,
chức năng quản trị trang web…
Trang web được xây dựng bằng ngôn ngữ C#, sử dụng đầy đủ các công nghệ cơ
bản của ASP.NET
Lớp 07T1 Nhóm 08 - 6 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
2.2. Sơ đồ phân rã chức năng
2.3. Thiết kế cơ sở dữ liệu
Lớp 07T1 Nhóm 08 - 7 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
3. Các công nghệ ứng dụng trong đề tài

3.1. State Management
State Management là cách lưu trữ thông tin giữa các lần request. Thông thườn,
những
View State
Query
String
Custom
Cookies
Session
State
Application
State
Dữ liệu cho
phép
Tất cả những
dữ liệu có
thể
serializable
Hạn chế số
lượng dữ
liệu kiểu
string
String data
Tất cả loại
dữ liệu
Tất cả loại
dữ liệu
Nơi lưu trữ
Một trường
ẩn ở trang

web hiện tại
Chứa trong
URL của
trình duyệt
Trong máy
của người
dùng
Lưu trên
server
Lưu trên
server
Vòng đời
Tồn tại lâu
dài khi
postback 1
trang
Mất khi
người dùng
gõ URL
mới hoặc
đóng trình
duyệt
Có thể
dùng ở
nhiều trang
Timeout,
thường là
20 phút
Tồn tại
trong 1

vòng đời
của ứng
dụng
Phạm vi
Giới hạn
trong trang
hiện tại
Giới hạn
trong trang
đích
Trong toàn
bộ ứng
dụng web
Trong toàn
bộ ứng
dụng web
Trong toàn
bộ ứng
dụng web,
nhưng dữ
liệu dùng
chung cho
tất cả người
dùng
Bảo mật
Dễ đọc,
không bảo
mật
Người
dùng thấy

rõ ràng và
dễ dàng
thay đổi
Không bảo
mật, dễ
dàng thay
đổi
Bảo mật
cao vì dữ
liệu không
bao giờ gửi
đến người
dùng
Bảo mật cao
vì dữ liệu
không bao
giờ gửi đến
người dùng
Hiệu năng
triển khai
Chậm nếu
phải lưu trữ
Không,
thông tin
Không,
thông tin
Chậm khi
chứa lượng
Chậm khi
lưu trữ dữ

Lớp 07T1 Nhóm 08 - 8 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
nhiều thông
tin, nhưng
không ảnh
hướng đến
hiệu năng
của server
truyền đi
giới hạn
bởi độ dài
URL
truyền đi
giới hạn
bởi độ dài
URL
thông tin
lớn, đặc
biệt khi số
lượng
người truy
cập lớn
liệu lớn bởi
vì không có
timeout,
không tự
xóa
Thường sử
dụng để
Cài đặt

những đặc
tính của
trang, duy trì
trạng thái dữ
liệu của các
control
Gửi ID của
những sản
phẩm đến
trang chi
tiết của nó
Lưu thông
tin cá nhân
của người
dùng
Thường
chứa hàng
hóa trong
các giỏ
hàng
Bất kỳ kiểu
nào của
global data
3.2. Custom errors
Có thể thay đổi chế độ hiển thị lỗi trong ứng dụng ASP.NET bằng cách cấu
hình file Web.config
Error Mode Mô tả
Remoteonly Tất cả những người dùng từ xa chỉ thấy những lỗi chung chung.
Còn đối với người dùng cục bộ sẽ sẽ thấy những thông tin lỗi đầy
đủ.

Off Tất cả những người dùng đều thấy thông tin lỗi đầy đủ. Rất hữu
ích đối với nhà phát triển nhưng không nên sử dụng khi triển khai.
On Tất cả những người dùng đều thấy thông tin lỗi chung chung. Đây
là chế độ bảo mật nhất những không hữu ích khi debug
3.3. Administrator Tool
Chỉnh sửa file Web.config một cách trực tiếp bằng tay có nhiều bất tiện. Để
thuận lợi ASP.NET cung cấp một công cụ cấu hình trực quan gọi là Website
Administrator Tool (WAT). Công cụ này cho phép cấu hình các phần khác nhau của
Web.config bằng cách dùng giao diện web. Để cấu hình project hiện tại trong VS ta
chọn Website  ASP.NET Configuration. Một cửa sổ duyệt web sẽ xuất hiện để
người dùng cấu hình.
Khi cấu hình trong WAT, file Web.config sẽ được tự động cập nhật.
Lớp 07T1 Nhóm 08 - 9 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
Lớp 07T1 Nhóm 08 - 10 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
3.4. Multi-Language
Để có thể làm cho trang web hỗ trợ đa ngôn ngữ ta cần lưu trữ nội dung các
đoạn text với các ngôn ngữ khác nhau. Ở đây ta dùng resource, có 2 loại resource là
toàn cục (global) và cục bộ (local). Và cho phép tự động nhận dạng ngôn ngữ (thiết lập
Culture và UICulture với giá trị auto).
Thao tác với Global Resource, thêm 2 file resource, 1 file với tên bình thường ,
1 file phải giống với tên file trước nhưng thêm đuôi ký hiệu của ngôn ngữ (có thể xem
từ IE), ở đây ngôn ngữ tiếng việt nên là .vi.
Tạo các biến ở 2 file nhưng dữ liệu khác nhau. Tham chiếu dữ liệu này với tên
giống nhau vào text của label (có thể là button…với dạng : <%$ Resources:TenFile,
ten bien%>).
Thao tác với Local Resource: tạo thư mục local resource, thêm 2 file resource,
1 file với tên phải giống với tên trang web tham chiếu tới dữ liệu này, 1 file có tên
giống tên file kia nhưng thêm đuôi của ngôn ngữ (ở đây la Default.aspx.resx và

Default.aspx.vi.resx).
Tạo các biến ở 2 file với tên khác nhau nhưng dữ liệu giống nhau. Ở đây ta cần
đặt tên biến là có dạng tendoituong.tenthuoctinh(tên đối tượng có thể bất kỳ, nhưng
thuộc tính thì phải tồn tại thật sự ở đối tượng mà tham chiếu đến nó). Tham chiếu dữ
liệu này vào đối tượng label(có thể là button với thuộc tính meta như sau:
meta:resourceKey = “ten doi tuong”).
Tạo các file .resx để chứa tên biến và ngôn ngữ tương ứng:
Trường text sẽ được thiết lập như sau:
Text='<%$ Resources:Default,lblProductDate %>'
Hai hàm được gọi để thay đổi ngôn ngữ:
protected void imgVN_Click(object sender, ImageClickEventArgs e)
{
Session["lang"] = "vi-VN";
Server.Transfer(Request.FilePath);
}
protected void imgEN_Click(object sender, ImageClickEventArgs e)
{
Session["lang"] = "en-US";
Server.Transfer(Request.FilePath);
}
Lớp 07T1 Nhóm 08 - 11 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
3.5. Validation
3.5.1. Giới thiệu Validation control
Validation control là những điều khiển giúp người lập trình dễ dàng kiểm tra và
thông báo tính hợp lệ của dữ liệu được nhập vào từ người sử dụng. Ưu điểm
của nó là giúp người lập trình tiết kiệm thời gian vì không phải gõ một dòng
code nào. Ví dụ: validation control sẽ kiểm tra và thông báo những lỗi khi
người dùng bỏ qua các trường quan trọng, nhập không đúng định dạng số điện
thoại hoặc email…

ASP.NET cung cấp 5 validation control sau:
 RequiredFieldValidator: thông báo nếu trường input được chỉ định còn
để trống.
 RangeValidator: thông báo nếu dữ liệu nhập vào vượt quá giới hạn cho
phép.
 CompareValidator: so sánh một giá trị nhập vào với một giá trị nhập vào
khác.
 RegularExpressionValidator: so sánh giá trị nhập vào có thỏa mãn một
biểu thức quy tắc (email, số điện thoại…) hay không.
 CustomValidator: validation được định nghĩa bởi người lập trình.
Bạn có thể áp dụng nhiều hơn một validation control cho một trường input.
Có thể chia validation ra làm 2 loại là Server-Side Validation và Client-Side
Validation. Khi nhấn một submit button, Server-Side Validation trang sẽ được post-
back và ASP.NET sẽ thực hiện việc kiểm tra, nếu có lỗi sẽ gửi về client một trang
chứa thông báo (do người lập trình tạo ra). Trong khi Client-Side Validation hoạt động
hoàn toàn ở phía client dựa vào một đoạn JavaScript do ASP.NET tự động chèn vào,
phương pháp này hiệu quả hơn về tốc độ vì không phải gửi trang lên server.
Ví dụ:
<asp:TextBox ID="txtUsername" runat="server" Width="229px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtUsername" ErrorMessage="Không để rống">
</asp:RequiredFieldValidator>
Lớp 07T1 Nhóm 08 - 12 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
3.6. User Controls
User control là công cụ hiệu quả trong việc sử dụng lại code và thiết kế giao
diện. Nó là công cụ quan trọng để xây dựng các module của ứng dụng web.
User control được định nghĩa trong file .ascx và file này có nhiều chức năng
tương tự file .aspx vì chúng đều thừa kế từ một lớp cha. File .ascx không được gọi trực
tiếp từ trình duyệt web, chúng được nhúng vào trang .aspx như những thành phần để

xây dựng nên trang .aspx.
Ví dụ:
Nội dung trang LanguageSelector.ascx:
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="LanguageSelector.ascx.cs"
Inherits="MobileShopOnline.LanguageSelector" %>
&nbsp;&nbsp;
<asp:ImageButton runat="server" ID="imgVN" ImageUrl="~/image/vn.jpg"
Width="20px" onclick="imgVN_Click" />
&nbsp;
<asp:ImageButton runat="server" ID="imgEN" ImageUrl="~/image/en.png"
onclick="imgEN_Click" />
Ta có thể khai báo một file LanguageSelector.ascx vào trang web bằng
directive Register (đặt ngay sau directive Page) như sau:
<%@ Register Src="LanguageSelector.ascx"
TagName="LanguageSelector"TagPrefix="mycontrol" %>
Sau đó bạn có thể sử dụng thành phần LanguageSelector này bất cứ nơi nào bạn
muốn trên trang web:
<mycontrol:LanguageSelector ID="lang" runat="server" style="float:right;"/>
3.7. Themes and Master Pages
3.7.1. Themes
Tượng tự CSS, theme dùng để định dạng thiết kế giao diện web của bạn. Tuy
nhiên ưu điểm khi sử dụng theme là có thể định dạng các control, điều mà CSS không
thể làm được.
Bạn có thể định nghĩa nhiều theme trong một ứng dụng web. Tuy nhiên, mỗi
theme phải được đặt trong một thư mục riêng biệt và chỉ một theme được kích hoạt ở
mỗi thời điểm.
Để áp dụng theme cho một trang web nào đó ta chỉ cần thêm thuộc tính
Theme=”themename” vào directive Page như sau:
Lớp 07T1 Nhóm 08 - 13 -

Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
<%@ Page Language="C#" AutoEventWireup="true" Theme="FunkyTheme" %>
Bạn có thể sử dụng nhiều skin cho một control bằng cách sử dụng thuộc tính
SkinID để đặt tên cho các skin khác nhau thuộc cùng một control trong file .skin.
Ví dụ:
Ta tạo một file .skin trong thư mục FunkyTheme với nội dung như sau:
<asp:ListBox runat="server" ForeColor="White" BackColor="Orange" />
<asp:TextBox runat="server" ForeColor="White" BackColor="Orange" />
<asp:Button runat="server" ForeColor="White" BackColor="Orange" />
<asp:TextBox runat="server" ForeColor="White" BackColor="DarkOrange" Font-
Bold="True" SkinID="Dramatic" />
<asp:Button runat="server" ForeColor="White" BackColor="DarkOrange" Font-
Bold="True" SkinID="Dramatic"/>
Trang web trước và sau khi sử dụng theme FunkyTheme.
Lớp 07T1 Nhóm 08 - 14 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
3.7.2. Master Page và chuyển hướng trang
Với hầu hết các website, khi bạn chuyển từ trang này sang trang khác nội dung
sẽ thay đổi, phần không thay đổi là header, menu và footer. Để tạo ra các trang web
với layout phù hợp bạn cần xác định các vị trí trong một template. Với các phiên bản
ASP.NET trước đó cho đến 2.0 thì không có một giải pháp template nào để bạn có thể
thiết kế 1 trang layout duy nhất.
May mắn thay, điều này được giải quyết bằng cái tên Master Page. Lợi ích lớn
nhất của Master Page la cho phép bạn thiết kế layout của tất cả các trang web trong
website của bạn chỉ tại một nơi duy nhất. Điều này có nghĩa nếu bạn muốn thay đổi
layout của website – chẳng hạn thay đổi menu từ trái sang phải – bạn chỉ cần chỉnh sửa
Master Page.
Một Master Page không thật sự là một trang web ASPX và không được request
trực tiếp trên trình duyệt, nó chỉ được dùng như một template cho các trang web –
được gọi là Content Page (trang nội dung).

Cũng giống như một trang ASPX thông thường, một Master Page có thể có một
tập tin Code Behind, xác định bởi CodeFile của nó và có thuộc tính Inherit (kế thừa).
Một Master Page không thật sự là một trang web ASPX và không được request
trực tiếp trên trình duyệt, nó chỉ được dùng như một template cho các trang web –
được gọi là Content Page (trang nội dung).
Cũng giống như một trang ASPX thông thường, một Master Page có thể có một
tập tin Code Behind, xác định bởi CodeFile của nó và có thuộc tính Inherit (kế thừa).
Ví dụ: tạo một website ứng dụng master page kết hợp chuyển hướng trang:
Nội dung file web.sitemap:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="
enableLocalization="true" >
<siteMapNode>
<siteMapNode url="~/Default.aspx" title='$resources: Sitemap, Default'
description="">
<siteMapNode url="~/Accessories.aspx" title='$resources: Sitemap,
Accessories' description="">
<siteMapNode url="~/Pin.aspx" title='$resources: Sitemap, Pin'
description=""/>
<siteMapNode url="~/Adapter.aspx" title='$resources: Sitemap,
Adapter' description=""/>
<siteMapNode url="~/Memory.aspx" title='$resources: Sitemap,
Memory' description=""/>
<siteMapNode url="~/Holster.aspx" title='$resources: Sitemap,
Holster' description=""/>
<siteMapNode url="~/Other.aspx" title='$resources: Sitemap, Other'
description=""/>
</siteMapNode>
Lớp 07T1 Nhóm 08 - 15 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động

<siteMapNode url="~/Download.aspx" title='$resources: Sitemap,
Download' description=""/>
<siteMapNode url="~/News.aspx" title='$resources: Sitemap, News'
description="" />
<siteMapNode url="~/Help.aspx" title='$resources: Sitemap, Help'
description="" />
<siteMapNode url="~/Contact.aspx" title='$resources: Sitemap,
Contact' description="" />
</siteMapNode>
<siteMapNode url="~/Admin/AdminCP.aspx" title='$resources: Sitemap,
Admin_AdminCP' description="" >
<siteMapNode url="~/Admin/Mobiles.aspx" title='$resources: Sitemap,
Admin_Mobiles' description="" />
<siteMapNode url="~/Admin/Goods.aspx" title='$resources: Sitemap,
Admin_Goods' description="" />
<siteMapNode url="~/Admin/Manufacturers.aspx" title='$resources:
Sitemap, Admin_Manufacturers' description="" />
<siteMapNode url="~/Admin/Categories.aspx" title='$resources:
Sitemap, Admin_Categories' description="" />
<siteMapNode url="~/Admin/Accessories.aspx" title='$resources:
Sitemap, Admin_Accessories' description="" />
<siteMapNode url="~/Admin/Application.aspx" title='$resources:
Sitemap, Admin_Application' description="" />
</siteMapNode>
</siteMapNode>
</siteMap>
Trích nội dung file Template.master sử dụng SiteMapPath để chuyển hướng:
<%@ Master Language="C#" AutoEventWireup="true"
CodeBehind="Template.master.cs" Inherits="MobileShopOnline.Template" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

" /><html xmlns=" /><head runat="server">
<title title='<%$ Resources:Default,titleHomePage %>' />
<link href="App_Themes/Grey/box/favicon.jpg" rel="shortcut icon"
type="image/x-icon" />
</head>
<body>
<div id="container">
<form id="form1" runat="server">
<%
Header
%>
<div id="header">
<div id="banner">
<img src="image/banner.jpg" alt="RSS"
style="float:right;"/>
</div>

<div id="navigation">
<div class="menu_right">
<div class="menu_left">
<div class="menu_center">

<asp:Menu ID="menu" runat="server"
DataSourceID="SiteMapDataSource1" SkinID="MainMenu" >
Lớp 07T1 Nhóm 08 - 16 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
<DynamicMenuStyle Width="100%" />
</asp:Menu>

<asp:SiteMapDataSource ID="SiteMapDataSource1"

runat="server" StartingNodeUrl="~/Default.aspx" />

</div>
</div>
</div>
</div>
</div>
<mycontrol:LanguageSelector ID="lang" runat="server"
style="float:right;"/>
<%
Content
%>
<div id="content">
<% Tin nổi bật %>
<div class="box_in_top">
<div class="box_bor_right">
<div class="box_bor_left">
<div class="box_bor_center">
<div class="box_top_title">
<div id="breadcrumb">
<asp:SiteMapPath ID="SiteMapPath1"
runat="server">
</asp:SiteMapPath>
</div>
</div>
</div>
</div>
</div>
</div>
</form>

</div>
</body>
</html>
Những trang còn lại tương tự trang default.aspx chứa nội dung trong ContentPlaceHolder1:
<%@ Page Title="" Language="C#" MasterPageFile="~/Template.Master"
AutoEventWireup="true" CodeBehind="Other.aspx.cs"
Inherits="MobileShopOnline.WebForm14" %>
<asp:Content ID="Content13" ContentPlaceHolderID="MainContent"
runat="server">
<! nội dung của trang >
</asp:Content>
Trang Default.aspx
Lớp 07T1 Nhóm 08 - 17 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
Trang Accessories.aspx
3.8. Ado.net
ADO.NET là một tập các lớp nằm trong bộ thư viện lớp cơ sở của .NET Framework, cho
phép các ứng dụng windows (như C#, VB.NET) hay ứng dụng web (như ASP.NET) thao tác
dễ dàng với các nguồn dữ liệu.
Mục tiêu chính của ADO.NET là:
• Cung cấp các lớp để thao tác CSDL trong cả hai môi trường là phi kết nối
(Disconected data) và kết nối (Connected data).
• Tích hợp chặt chẽ với XML (Extensible Markup Language)
• Tương tác với nhiều nguồn dữ liệu thông qua mô tả dữ liệu chung.
• Tối ưu truy cập nguồn dữ liệu (OLE DB & SQL server).
• Làm việc trên môi trường Internet (môi trường phi kết nối – Disconnected eviroment).
Lớp 07T1 Nhóm 08 - 18 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
Các lớp của ADO.NET được đặt trong Namespace là System.Data/ System.Data.oledb
ADO.NET bao gồm 2 Provider (2 bộ thư viện) (thường dùng) để thao tác với các CSDL

là: OLE DB Provider (nằm trong System.Data.OLEDB) dùng để truy xuất đến bất kỳ
CSDL nào có hỗ trợ OLEDB; SQL Provider (nằm trong System.Data.SQLClient)
chuyên dùng để truy xuất đến CSDL SQL Server (Không qua OLE DB nên nhanh hơn).
ADO.NET và các lớp .NET cơ bản
Hiểu về kiến trúc ADO.NET
Lớp 07T1 Nhóm 08 - 19 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
ADO.NET có 2 thành phần chính: data providers và datasets
Bạn có thể thấy mối quan hệ của chúng trên hình. Chú ý ‘DataView class’
không phải là một thành phần ‘data provider’. DataView được sử dụng phần lớn để
gắn (bind) dữ liệu vào winform và webform.
Hình trên là sự khác nhau khi sử dụng SQL Server và OLE DB data providers để truy
cập (access) vào một cơ sở dữ liệu SQL Server.
Hình dưới đây minh họa mối tương quan chung giữa Access và SQLServer
Lớp 07T1 Nhóm 08 - 20 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
Sử dụng SQL Server Data Provider.NET data provider cho SQL Server trong tên miền
‘System.Data.SqlClient’ giúp kết nối trực tiếp với server sử dụng network protocol của
nó không phải đi qua các layers khác.
Các hàm thường sử dụng:
1. SqlCommand: thực thi SQL queries, câu lệnh hoặc lưu trữ thủ tục
2. SqlConnection: tạo kết nối tới SQL Server
3. SqlDataAdapter: cầu nối trung gian giữa dataset và data source
4. SqlReader: cung cấp một data stream tới kết quả
5. SqlError: lưu trữ thông tin về lỗi và cảnh cáo (warning)
6. SqlException: các ngoại lệ trong trường hợp SQL Server lỗi và cảnh báo
7. SqlParameter: tham sô biên command
8. SqlTransaction: transaction của SQL Server
Sử dụng OLE DB Data Provider.NET Framework data provider cho OLE DB nằm
trong tên miền ‘System.Data.Oledb’.

Các classes hay dùng:
1. OledbCommand: thực thi các SQL queries, câu lệnh hoặc lưu trữ thủ tục.
2. OledbConnection: tạo kết nối tới một OLE DB source
3. OledbDataAdapter: tạo cầu nối giữa dataset và data source
4. OledbDataReader: cung cấp data stream tới các rows của data source
5. OledbError: Lưu trữ thông tin về lỗi và cảnh báo
6. OledbParameter: tham số command
7. OledbTransaction: transaction của SQL
Một vài OLE DB Providers:
1. DB2OLEDB: Microsoft OLE DB provider for DB2
2. SQLOLEDB: Microsoft OLE DB provider for SQL Server
3. Microsoft.Jet.OLEDB.4.0: Microsoft OLE DB provider for Access (sử dụng
Jet)
4. MSDAORA: Microsoft OLE DB provider for Oracle
5. MSDASQL: Microsoft OLE DB provider for ODBC
Ta sẽ tạo một ví dụ đơn giản sau:
Tạo file AuthorBrowser.aspx.cs với nội dung:
Lớp 07T1 Nhóm 08 - 21 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
public partial class AuthorBrowser : System.Web.UI.Page
{
private string connectionString =
WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
FillAuthorList();
}
}

private void FillAuthorList()
{
lstAuthor.Items.Clear();
// Define the Select statement.
// Three pieces of information are needed: the unique id,
// and the first and last name.
string selectSQL = "SELECT au_lname, au_fname, au_id FROM Authors";
// Define the ADO.NET objects.
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader reader;
// Try to open database and read information.
try
{
con.Open();
reader = cmd.ExecuteReader();
// For each item, add the author name to the displayed
// list box text, and store the unique ID in the Value
property.
while (reader.Read())
{
ListItem newItem = new ListItem();
newItem.Text = reader["au_lname"] + ", " +
reader["au_fname"];
newItem.Value = reader["au_id"].ToString();
lstAuthor.Items.Add(newItem);
}
reader.Close();
}
catch (Exception err)

{
lblResults.Text = "Error reading list of names. ";
lblResults.Text += err.Message;
}
finally
{
con.Close();
}
}
protected void lstAuthor_SelectedIndexChanged(object sender, EventArgs
e)
{
// Create a Select statement that searches for a record
// matching the specific author id from the Value property.
Lớp 07T1 Nhóm 08 - 22 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
string selectSQL;
selectSQL = "SELECT * FROM Authors ";
selectSQL += "WHERE au_id='" + lstAuthor.SelectedItem.Value + "'";
// Define the ADO.NET objects.
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader reader;
// Try to open database and read information.
try
{
con.Open();
reader = cmd.ExecuteReader();
reader.Read();
StringBuilder sb = new StringBuilder();

sb.Append("<b>");
sb.Append(reader["au_lname"]);
sb.Append(", ");
sb.Append(reader["au_fname"]);
sb.Append("</b><br />");
sb.Append("Phone: ");
sb.Append(reader["phone"]);
sb.Append("<br />");
sb.Append("Address: ");
sb.Append(reader["address"]);
sb.Append("<br />");
sb.Append("City: ");
sb.Append(reader["city"]);
sb.Append("<br />");
sb.Append("State: ");
sb.Append(reader["state"]);
sb.Append("<br />");
lblResults.Text = sb.ToString();
reader.Close();
}
catch (Exception err)
{
lblResults.Text = "Error getting author. ";
lblResults.Text += err.Message;
}
finally
{
con.Close();
}
}

}
Phần body của file AuthorBrowser.aspx có nội dung:
<body>
<form id="form1" runat="server">
<div>
<asp:label id="Label1" runat="server" Width="120px"
Height="20px">Select Author:</asp:label>&nbsp;
<asp:dropdownlist id="lstAuthor" runat="server" Width="256px"
Height="22px"
AutoPostBack="True"
onselectedindexchanged="lstAuthor_SelectedIndexChanged">
Lớp 07T1 Nhóm 08 - 23 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
</asp:dropdownlist>
<br />
<br />
<br />
<asp:label id="lblResults" runat="server" Width="384px"
Height="168px">
</asp:label>
</div>
</form>
</body>
Kết quả:
Lớp 07T1 Nhóm 08 - 24 -
Ứng dụng asp.net and web applications - Trang web bán điện thoại di động
Lớp 07T1 Nhóm 08 - 25 -

×