Ngày gửi: 29/06/2009 lúc 1:46 chiều | Đã khóa IP
|
|
|
Trong giáo trình này chúng ta sẽ học ASP.NET trên IDE VisualStdio2005(Bạn có thể sử dụng Viusal Web Develop 2005 ).
Để tạo một Wesite mới bạn khởi động VS. giao diện của nó sẽ hiện ra như sau:
I. Giới thiệu chung về ASPNetFramwork Trong giáo trình này chúng ta sẽ học ASP.NET trên IDE VisualStdio2005(Bạn có thể sử dụng Viusal Web Develop 2005 ). Để tạo một Wesite mới bạn khởi động VS. giao diện của nó sẽ hiện ra như sau:
Hình 1 Trong Box Recent Project bạn chọn “Web site…” ở dòng Create Hộp thoại New Website hiện ra bạn chọn ASP.NET WebSite rồi chọn thư mục bạn để Website và ngôn ngữ kịch bản để bản viết Web và nhấn OK
Hình 2 VS sẽ tạo ra một website với tên của Website là tên bạn vừa đặt và mặc định sẽ có một trang Default.aspx như hình sau:
Hình 3 1. ASP.NET và .NET FRAMEWORK ASP.NET
là một phần của .NET FrameWork Để xây dựng trang asp.NET bạn cần thêm
vào các đặc tính của .netframework. NetFrameWork chứa đựng hai phần
FrameWork Class Library và Commom Language Runtime. 1.1 Hiểu về Framework Class Library Framework chứa đựng hàng nghìn lớp mà bạn có thể sử dụng trong ứng dụng của mình. Ví dụ một vài lớp của .Net Framework -Lớp File: cho phép bạn tạo file, sửa, xoá hay kiểm tra sự tồn tại của file trên đĩa cứng… -Lớp Graphics: Cho phép bạn làm việc với nhiều kiểu của ảnh, bạn cũng có thể tạo ra các ảnh từ các phương thức trên lớp này. -Lớp SmtpClient: Cho phép bạn gửi thư. Hiểu
về Namespaces: hơn 13 nghìn lớp trong Netframework. Đây là một con số
rất lớn, Microsoft đã chia các lớp cùng xử lý về một vấn đề gì đó vào
các không gian tên chung hay namespaces. Một
Namespace đơn giản là một danh mục, ví dụ tất cả các lớp thao tác với
File và thư mục chúng ta đưa vào một namespaces chung gọi là System.IO,
hay tất cả các lớp làm việc với SqlServer có thể đưa vào namespace
System.Data.SqlClient. Các namespaces chung nhất trong net: . System . System.Collections . System.Collections.Specialized . System.Configuration . System.Text . System.Text.RegularExpressions . System.Web . System.Web.Caching . System.Web.SessionState . System.Web.Security . System.Web.Profile . System.Web.UI . System.Web.UI.WebControls . System.Web.UI.WebControls.WebParts 1.2 Hiểu và Assembly: Một
Assembly là một file dll trên đĩa cứng của bạn, nơi mà lưu trữ các lớp
của .NET, ví dụ tất cả các lớp trong .ASP.NET Framework đều nằm trong
Assembly System.web.dll. Trước khi sử dụng các lớp trong dll bạn cần tạo một tham chiếu đến file dll này 1.3 Hiểu về Commom Language Runtime(CLR) Phần thứ 2 của NetFramework là CLR chịu trách nhiệm về thực thi mã ứng dụng của bạn. Khi
bạn viết ứng dụng bằng ngôn ngữ C#, VB.NET hay bằng một ngôn ngữ bất kỳ
trên nền NetFramwork mã của bạn sẽ được không bao giờ biên dịch trực
tiếp thành mã máy. Thay vào đó chúng được biên dạng sang ngôn ngữ đặc
tả MSIL (Microsoft intermediate Language). MSIL
nhìn rất giống với ngôn ngữ hướng đối tượng Assembly, nhưng không giống
kiểu ngôn ngữ Assembly. MSIL là ngôn ngữ bậc thấp và phụ thuộc vào
Platform. Khi ứng dụng của bạn thực thi, mã MSIL là “just in time” biên dịch sang mã máy bởi JITTER(just in time compiler) Như
vậy khi bạn viết các lớp trên .Net bằng bất kỳ ngôn ngữ nào khi bạn
biên dịch sang Assembly bạn đều có thể sử dụng Assembly đó cho các ngôn
ngữ khác. 1.4 Hiểu về các điều khiển trên Asp.net Các
điều khiển asp.net là phần quan trọng nhất trong ASP.NET Framework. một
Control ASP.NET là một lớp mà thực thi trên server và đưa ra nội dung
trên trình duyệt. ASP.NET có hơn 70 control mà bạn có thể sử dụng trong
xây dựng ứng dụng web của bạn và cơ bản nó chia ra các nhóm control sau: Standard control: bao gồm các điều khiển đưa ra các thành phần chuẩn của form như: Label, Button, TextBox… Validator Control: là các control cho phép bản kiểm tra tính hợp lệ của các control cho phép nhập giá trị trên form. Rich Control: là những điều khiển như FileUpload, Calendar… Data Control là các điều khiển cho phép thao tác với dữ liệu Navigation Control: là những điều khiển giúp bạn dễ dàng di chuyển giữa các trang trong website. Login control: Là các điều khiển về bảo mật của ứng dụng cho phép bạn đưa ra các form đăng nhập, thay đổi mật khẩu… HTML Control: cho phép bạn chuyển các điều khiển của HTML thành các điều khiển có thể làm việc trên server. 1.5 hiểu về điều khiển sự kiện trên server phần
lớn các điều khiển của asp.net hỗ trợ 1 hoặc nhiều sự kiện, ví dụ điều
khiển ASP.NET Button hỗ trợ sự kiện Click, khi người sử dụng nhấn chuột
vào Button một sự kiện sẽ được đưa ra và công việc này được xử lý trên
server. Ví dụ: Trang UnderstandEvent.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UnderstandEvent.aspx.cs" Inherits="UnderstandEvent" %> <script runat="server"> protected void Button1_Click(object sender, EventArgs e) { Label1.Text = TextBox1.Text; } script> DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Hiểu về sự kiện phía servertitle> head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server">asp:TextBox> <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Button" /> <hr /> <asp:Label ID="Label1" runat="server" Text="Label">asp:Label> div> form> body> html> Trong
ví dụ trên gồm 3 điều khiển của ASP.NET là TextBox, Label, và Button,
mỗi khi người sử dụng nhập dữ liệu vào Textbox và nhấn vào Button sự
kiện Button1_Click được đưa ra và điền dữ liệu từ TextBox và Label. 1.6 Hiểu về View State Giao
thức http là giao thức nền móng của WWW, là một giao thức chuẩn thực
tế.mỗi lần bạn request một trang từ website, một dữ liệu mới được đưa
ra, ASP.NET Framework có thể quản lý được vượt ra ngoài giới hạn của
giao thức http, ví dụ bạn điền dữ liệu vào một điều khiển Label với
thuộc tính Text của nó, dữ liệu này sẽ được lưu trữ qua nhiều trang web
và chỉ thay đổi khi nó được gán lại giá trị. Ví
dụ sau sẽ đưa một một trang asp.net trong đó gồm 2 điều khiển Button và
Label(Text của nó hiển thị số đếm), mỗi lần nhấn vào Button thì giá trị
của Label tăng lên 1. Ví dụ trang Understandstate.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Understandstate.aspx.cs" Inherits="Understandstate" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ; <script runat="server"> protected void Button1_Click(object sender,EventArgs e) { Label1.Text = Convert.ToString(int.Parse(Label1.Text) + 1); } script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Under Stand Statetitle> head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="0">asp:Label> <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Button" /> div> form> body> html> Nếu bạn mở View Source code của trang Understandstate.aspx trên bạn sẽ thấy như sau: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE4OTg4OTc0MjUPZBYCAgQPZBYCAgEPDxY CHgRUZXh0BQEzZGRkz0aTZTJffZRUP11aiDXbPGQGitk=" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKK7LjKBwKM54rGBgzCWqbCIzq33uVXHF19FzfdGPsJ" /> Đây
là 2 file hidden trong form nó chứa giá trị Text của Label khi trang
được postback nó sẽ ghi nhớ text đó và sẽ khởi tạo lại giá trị của
Label khi trang Load.
1.7 Hiểu về trang asp.net Sử dụng Code-Behind Thay vì sử dụng
< runat="”sever”/"> ngay trên trang asp.net. người ta đưa ra thêm một trang gọi là Code-behind chứa các mã lệnh thực hiện trên trang asp.net. Ví
dụ như phần đầu của chương khi ta tạo ra một website thì mặc định sẽ
tạo ra một lớp Default.aspx và nó sẽ kèm theo một trang Default.aspx.cs Trang Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Defaulttitle> head> <body> <form id="form1" runat="server"> <div>
div> form> body> html>
Trang Defautl.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
} }
1.8 Điều khiển sự kiện của trang asp.net Khi chạy trang asp.net thì vòng đời của trang asp.net gồm các sự kiện 1.PreInit 2. Init 3. InitComplete 4. PreLoad 5. Load 6. LoadComplete 7. PreRender 8. PreRenderComplete 9. SaveStateComplete 10. Unload Sử dụng thuộc tính Page.IsPostBack Với
sự kiện Load của trang thì khi tải trang lên thì có một sự kiện nào đó
được đưa ra, nếu có nghĩa mỗi lần load lại trang nó lại thực hiện công
việc đó, còn nếu ta đưa thêm vào thuộc tính Page.IsPostBack thì ta có
thể điều khiển được sự kiện nào được thực hiện và sự kiện nào không khi
trang đựơc tải lại.
II Cơ bản về lập trình C# lập trình trong trang ASP.NET 1. Kiểu dữ liệu. C# đưa ra các kiểu dữ liệu dựng sẵn rất tiện ích, phù hợp với một ngôn ngữ lập trình hiện đại. Bảng sau đây sẽ miêu tả một số kiểu dữ liệu chính trong C# Kiểu C# | Kiểu .Net | Số Byte | Mô tả | byte | Byte | 1 | số nguyên không dấu từ 0 đến 255 | char | Char | 2 | Kiểu ký tự Unicode | bool | Boolean | 1 | Giá trị true/false | sbyte | Sbyte | 1 | Số nguyên có dấu, từ -128 đến 127 | short | Int16 | 2 | Số nguyên có dấu từ -32768 đến 32767 | ushort | Int16 | 2 | Số nguyên không dấu từ 0 đến 65.535 | int | Int32 | 4 | Số nguyên có dấu –2.147.483.647 đến 2.147.483.647 | uint | Int32 | 4 | Số nguyên không dâu 0 đến 4.294.967.295 | float | Single | 4 | kiểu dấu chấm động, giá trị xấp xỉ từ 3,4E-38 đến 3,4E+38, với 7 chữ số có nghĩa. | Double | Double | 8 | Kiểu dấu chấm động có độ chính xác gấp đôi, giá trị xấp xỉ từ 1,7E-308 đến 1,7E+308, với 15,16 chữ số có nghĩa | Decimal | Decimal | 8 | Có
độ chính xác đến 28 con số và giá trị thập phân, được dùng trong tính
toán tài chính, kiểu này đòi hỏi phải có hậu tố m hoặc M kèm theo sau. |
2. khai báo biến Cú pháp: Kiểu Tên_biến; Ví dụ: string giatri_chuoi; int giatri_nguyen; chú ý biến có thể bao gồm các chữ cái, chữ số(không được đứng đầu) và ký tự _ (nối) biến trong C# phân biệt chữ hoa và chữ thường. 3. Sử dụng các trình bày a. trình bày if – if else Khi
bạn cần kiểm tra một điều kiện nào đó trước khi thực hiện công việc,
hoặc kiểm tra điều kiện nếu đúng thì làm việc còn khác thì không làm
bạn có thể dùng trình bày if – if else cú pháp: if(điều_kiên) { //thực hiện công việc }
if(điều_kiên) { // thực hiện công việc 1 } else { //thực hiện công việc 2 } Lưu ý bạn có thể dùng nhiều cặp if – else l*ng nhau: Ví dụ: Vd1 if (conn.State != ConnectionState.Open) conn.Open(); Vd2 if (1 > 2) MessageBox.Show("1>2"); else MessageBox.Show("2>1"); b, Sử dụng trình bày switch case Khi
công việc có nhiều lựa chọn và tuỳ vào từng trường hợp để bạn đưa ra
công việc phù hợp với điều kiện đưa vào bạn có thể dùng trình bày
switch case. Ví dụ: string giatri = Request.QueryString["abc"]; switch (giatri) { case "a": //thuc hien cong viec a break; case "b": //thuc hien cong viec b break; default: //thuc hien cong viec mac dinh break; } c, Sử dụng trình bày for Ví dụ string giatri; for (int i = 0; i < 10; i++) giatri += i.ToString(); MessageBox.Show(giatri); Khi làm việc với mảng hay trong trường hợp thực hiện một công việc trong khoảng nào đó chúng ta có thể dùng trình bày for. d, Sử dụng trình bày while thực hiện công việc trong khi điều kiện đúng Ví dụ int i = 0; while (i < 5) { Console.WriteLine(i.ToString()); i++; } e, Sử dụng trình bày do while ngược lại với while – do while làm việc cho đến khi điều kiện đúng thì thoát. Ví dụ int i = 0; do { MessageBox.Show(i.ToString()); i++; } while (i < 3); f, Sử dụng trình bày break (để thoát khỏi vòng lặp) Ví dụ
int i = 0; do { MessageBox.Show(i.ToString()); i++; if (i == 1) break; } while (i < 3);
g, Sử dụng trình bày continue. Ví dụ int j = 0; for ( int i = 0; i < 5; i++ ) { j++; if ( j > 2 ) { MessageBox.Show(j.ToString()); continue; } }
h, Sử dụng trình bày return(được sử dụng trong các hàm để trả về giá trị cụ thể cho hàm) Ví dụ public int sum(int a, int b) { return a + b; }
k, Sử dụng trình bày goto. Ví dụ int i = 0; int j = 0; while (i < 5) { i++; j++; if (j == 2) goto jumpeddoutofloop; } jumpeddoutofloop: Console.WriteLine("I jumped out");
4. Trang asp.net Trang asp.net có đuôi mở rộng là .aspx và kèm theo một lớp phục vụ ẩn đằng sau(Code behind). Để
viết code C# trong trang aspnet ta có thể khai báo và sử dụng trực tiếp
trong trang asp.net, trong file code behind, hoặc từ một thành phần thư
viện và ta gọi vào.
4.1 Viết code C# trong file .aspx: về cơ bản bạn dùng các các thẻ sau bạn có thể khai báo biến hoặc viết các hàm, lớp trong thể này, với thẻ này bạn dùng để gọi giá trị của biến hay của 1 hàm nào đó, lấy giá trị dùng trang các đối tượng ràng buộc dữ liệu.
Đây là một ví dụ đơn giản Trang basic.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Basic.aspx.cs" Inherits="_Default" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Basictitle> head> <body> <form id="form1" runat="server"> <div> <% string abc = "Hello World!"; %> Biến abc của bạn vừa khai báo có giá trị <%=abc %> div> form> body> html>
<!--[if !supportLists]-->4.2 <!--[endif]-->Viết code trong trang code behind Vì
trang aspnet của chúng ta kế thừa từ trang aspx.cs lên trong trang
.aspx chúng ta muốn gọi dữ liệu từ biến hay hàm trong file .aspx.cs
chúng ta phải khai báo với bổ ngữ truy cập protected hoặc public.
Ví dụ sau: Trang codebehind.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="codebehind.aspx.cs" Inherits="codebehind" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Pagetitle> head> <body> <form id="form1" runat="server"> <div> <h3>Gán giá trị:h3> <asp:Label ID="lblhello" runat="server" Text="Label">asp:Label><br /><br /> <h3>Lấy giá trị từ code behindh3> <%=_hello %> div> form> body> html>
Trang codebehind.aspx.cs using System;
public partial class codebehind : System.Web.UI.Page { protected string _hello; protected void Page_Load(object sender, EventArgs e) { _hello = "Hello World"; lblhello.Text = _hello; } } Trong
ví dụ trên có sử dụng một điều khiển asp.net là Label các bạn sẽ được
học trong chương sau, ở chương này bạn hiểu nó là một điều khiển để
hiển thị dữ liệu. Bạn
thấy trong phần code behind có khai báo một biến _hello kiểu string và
bổ ngữ truy cập là protected trong sự kiện Page_Load(khi trang được tải
lên) chúng ta gán _hello = "Hello World"; và sau đó gán
giá trị cho Label bằng giá trị của _hello. Còn trong trang .aspx chúng
ta có sử dùng thẻ <%= %>để lấy giá trị của _hello để in ra màn
hình. 4.3 tạo một lớp thư viện Để
tạo một lớp thư viện phục vụ cho trang asp.net bạn có thể tạo một thành
phần thư viện động DLL rồi nhập tham chiếu đến nó để sử dụng(chúng ta
sẽ học nó trong phần asp.net nâng cao). Trong ứng dụng web ASP.NET
Framework có một ASP.NET FOLDER là App_Code cho phép chúng ta viết các
lớp thư viện ở đây và có thể sử dụng trong các trang của ứng dụng web. để tạo thư mục App_code bạn làm theo các bước sau đây: bước 1: nhấn chuột phải vào Solution và chọn theo đường dẫn của ảnh dưới đây.
Trong ứng dụng web của chúng ta sẽ thêm vào một thư mục App_code
tại đây chúng ta có thể viết vào các lớp thư viện. Để tạo một lớp thư viện trong thư mục này chúng ta nhấn chuột phải vào thư mục App_code rồi chọn Add New Item
Form Add New Item hiện ra
Bạn chọn Class và trong hộp TextBox Nam bạn nhập tên lớp muôn tạo và nhân nút Add.
a, Định nghĩa lớp: Khai báo: [Thuộc tính] [bổ sung truy cập] Class [Tên lớp] : [Lớp cơ sở] { //các biến, phương thức hay thuộc tính của lớp }
Ví dụ: Lớp HelloWorld.cs
class HelloWorld { public string SayMessage() { return "Hello World"; } }
Trong ví dụ trên phương thức SayMessage sẻ về chuỗi “Hello World”. b, Sử dụng định nghĩa truy cập Public: một lớp, một phương thức, hay thuôc tính khi sử dụng từ khoá này sẽ không bị hạn chế truy cập Protected: Lớp, Phương thức, Thuộc tính chỉ được sử dụng ở lớp này hoặc lớp được dẫn xuất. Internal: Một lớp, phương thức, thuộc tính Internal chỉ được truy cập trong một thành phần Assembly(file DLL). Private: Một lớp Private, phương thức hoặc thuộc tính chỉ có thể truy cập tại chính lớp đó.
c, Hàm và thủ tục Bạn
có thể hiểu đơn giản hàm phải có giá trị trả về còn thủ tục như một
đoạn mã chỉ thực hiện khi được chúng ta gọi. thủ tục còn được gọi là
hàm không kiểu, hàm và thủ tục trong C# gọi chung là phương thức. Ví dụ hàm: public static int Sum(int _a, int _b) { return _a + _b; } Trên
là một hàm dùng để tính tổng của hai số, như bạn thấy trả về dữ liệu
cho hàm chúng ta dùng từ khoá return, bổ sung truy cập public có ý
nghĩa hàm được sử dụng trong toàn ứng dụng, từ khoá static đây là một
phương thức tĩnh lên có thể sử dụng mà không cần phải khai báo khởi tạo
đối tượng Ví dụ về thủ tục public static void HelloProcedure(string _bien) { System.Web.HttpContext.Current.Response.Write(_bien); } Sử dụng lớp HellWorld trong trang aspx của chúng ta Trang UseHelloworld.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UseHelloworld.aspx.cs" Inherits="UseHelloworld" %> DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ; <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Sử dụng Lớp Hello World trong thư mục App_Codetitle> head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblHello" runat="server" Text="Label">asp:Label> div> form> body> html> Trang UseHelloworld.aspx.cs using System; public partial class UseHelloworld : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblHello.Text = HelloWorld.sayMessage(); } } Vì phương thức sayMessage trong lớp HelloWorld là một phương thức tĩnh lên ta không cần khởi tạo lớp để sử dựng.
5. Cơ bản về lớp trong C# 5.1 Khai báo Field và thuộc tính Ví dụ về Field public class HelloWorld { public string _Message; public string SayMessage() { return _Message; } }
Trong
đoạn mã trên bạn thấy Field _Message được khai báo kiểu string và bổ
ngữ truy cập là public, và _Message được trả về giá trị bởi phương thức
SayMessage(). Ví dụ về thuộc tính public class HelloWorld { public string _Message; public string Message { get { return _Message; } set { _Message = value; } } }
Một
thuộc tính Message được khai báo ở trên gồm 2 phương thức get trả về
giá trị cho Message và phương thức set thiết lập giá trị cho Message.
Thuộc tính Message ở trên là phương thức vừa đọc vừa ghi. nếu bạn xây
dựng thuộc tính chỉ đọc thì bạn chỉ cung cấp phương thức get hay thuộc
tính chỉ ghi bạn cung cấp cho thuộc tính đó phương thức set.
5.2 Phương thức khởi dựng của lớp Phương
thức khởi dựng là phương thức đặc biệt của lớp, nó được gọi tự động khi
khởi tạo mới lớp đó.bạn sử dụng phương thức khởi dụng để khởi tạo các
private fields chứa đựng trong lớp. Phương thức khởi dựng của lớp phải
trùng với tên của lớp, 1 phương thức của lớp có thể có đối số hoặc
không có đối số, và có thể có nhiều phương thức khởi dựng cho lớp nhưng
các đối số trong các phương thức phải khác nhau. Ví dụ: Xây dựng lớp: Construction.cs using System; public class Construction { int _giatri1; int _giatri2; public Construction() { _giatri1 = 0; _giatri2 = 0; }
public Construction(int _giatri1, int _giatri2) { this._giatri1 = _giatri1; this._giatri2 = _giatri2; }
public int Sum() { return _giatri1 + _giatri2; } }
Trong
lớp này chúng ta xây dựng hai phương thức khởi dựng một phương thức
không có đối số và một phương thức có đối số, và một hàm tính tổng của
2 giá trị nó được sử dụng trang trang asp.net như sau: Trang UseConstruction.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UseConstruction.aspx.cs" Inherits="UseConstruction" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Sử dụng phương thức khởi dựng của lớptitle> head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblhello" runat="server" Text="Label">asp:Label> div> form> body> html> Trang UseConstruction.aspx.cs using System;
public partial class UseConstruction : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Construction construc = new Construction(5, 6); lblhello.Text = "Giá trị là: " + construc.Sum().ToString(); } }
5.3 Overloading phương thức Khi
một phương thức được overloaded có nghĩa là hai phương thức có tên
trùng nhau nhưng các đối số của nó phải khác nhau. Khi trong lớp của
bạn có các phương thức overload thì bạn gọi hàm VS sẽ xuất hiện như sau
để bạn có thể dễ dàng chọn được phương thức mình cần gọi. Ví dụ:
Bạn tạo một lớp Lớp UseOverload.cs using System;
public class UseOverload { public static int Sum(int a, int b) { return a + b; }
public static int Sum(int a, int b, int c) { return a + b + c; }
public static int Sum(int a, int b, int c, int d) { return a + b + c + d; } } Trong lớp này gồm 3 hàm tính tổng lần lượt được đưa vào 2,3,4 đối số Sử dụng lớp này trong trang ASP.NET Trang Overloading.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Overloading.aspx.cs" Inherits="Overloading" %>
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ;
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Pagetitle> head> <body> <form id="form1" runat="server"> <div> <h1>Chồng hoá phương thức tính tổngh1> Tổng 2 số:<asp:Label ID="lbl2so" runat="server" Text="Label">asp:Label><br /><br /> Tổng 3 số:<asp:Label ID="lbl3so" runat="server" Text="Label">asp:Label><br /><br /> Tổng 4 số:<asp:Label ID="lbl4so" runat="server" Text="Label">asp:Label><br /><br /> div> form> body> html> Trang Overloading.aspx.cs using System;
public partial class Overloading : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lbl2so.Text = UseOverload.Sum(5, 5).ToString(); lbl3so.Text = UseOverload.Sum(5, 5, 5).ToString(); lbl4so.Text = UseOverload.Sum(5, 5, 5, 5).ToString(); } } Trong lớp này bạn gọi lần lượt các phương thức tính tổng với 2,3,4 đối số để truyền giá trị vào các Label tương ứng cùng tên. Kết xuất của chương trình:
Được sửa bởi DUCVINH83 trên diễn đàn 29/06/2009 lúc 2:02 chiều
__________________
YM: DUCVINH83
0912 822334
|