Xây dựng và sử dụng cácđiều khiển do người dùng tạo ra Bởi: Khuyet Danh Một webcontrol cho phép bạn xây dựng những control mới từ những control của asp.net, bạn có thể dễ dàng mở rộng AS
Trang 1Xây dựng và sử dụng các
điều khiển do người dùng tạo
ra
Bởi:
Khuyet Danh
Một webcontrol cho phép bạn xây dựng những control mới từ những control của asp.net, bạn có thể dễ dàng mở rộng ASPNET Framework từ những control do mình tạo ra
Việc thao tác với webcontrol thì hầu hết là giống với aspx, để sử dụng webcontrol trên trang aspx bạn phải đăng ký nó trước khi sử dụng với chỉ dẫn <%@ Register %> ,
ví dụ
<%@ Register TagPrefix="main" TagName="cal"
Src="~/Caculator.ascx" %>
TagPrefix: Chỉ định không gian tên mà bạn muốn kết hợp usercontrol và trang hiện tại TagName: Chỉ định tên mà bạn muốn kết hợp usercontrol và trang hiện tại
Src: chỉ đến đường dẫn của control(.ascs)
Tạo một webcontrol thực hiện phép tính toán và sử dụng nó trong 1 trang aspx
Code 1: Caculator.ascx
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="Caculator.ascx.cs" Inherits="Caculator" %>
<asp:Label ID="Label1" runat="server" Text="Nhập
a:"></asp:Label> <asp:TextBox ID="txta"
runat="server"></asp:TextBox> <asp:Label ID="Label2" runat="server" Text="Nhập b:"></asp:Label> <asp:TextBox ID="txtb" runat="server"></asp:TextBox> <hr /> <asp:Button ID="btnsum" OnCommand="Calculator" CommandName="cal"
Trang 2CommandArgument="sum" runat="server" Text="+" Width="45px" /> <asp:Button ID="btnsub" OnCommand="Calculator"
CommandName="cal" CommandArgument="sub" runat="server"
Text="-" Width="45px" /> <asp:Button ID="btnmul"
OnCommand="Calculator" CommandName="cal"
CommandArgument="mul" runat="server" Text="X" Width="45px" /> <asp:Button ID="btndiv" OnCommand="Calculator"
CommandName="cal" CommandArgument="div" runat="server"
Text="/" Width="45px" /> <hr /> <asp:Label ID="lblresult" runat="server" Text="Label"></asp:Label> <hr />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txta" ErrorMessage="Bạn phải nhập a" Visible="False"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txta" ErrorMessage="a phải là kiểu
nguyên" MaximumValue="9999999" MinimumValue="0"
Type="Integer" Visible="False"></asp:RangeValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtb" ErrorMessage="Bạn phải nhập b" Visible="False"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator2" runat="server" ControlToValidate="txtb" ErrorMessage="a phải là kiểu
nguyên" MaximumValue="9999999" MinimumValue="0"
Type="Integer" Visible="False"></asp:RangeValidator> <p>
</p> <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
Code 2 Caculator.ascx.cs
using System; public partial class Caculator :
System.Web.UI.UserControl { protected void
Page_Load(object sender, EventArgs e) { } protected void Calculator(object sender, CommandEventArgs e) { if
(e.CommandName == "cal") { switch
(e.CommandArgument.ToString()) { case "sum":
lblresult.Text = Convert.ToString(int.Parse(txta.Text) + int.Parse(txtb.Text)); break; case "sub": lblresult.Text = Convert.ToString(int.Parse(txta.Text)
-int.Parse(txtb.Text)); break; case "mul": lblresult.Text = Convert.ToString(int.Parse(txta.Text) *
int.Parse(txtb.Text)); break; case "div": { if
Trang 3(int.Parse(txtb.Text) != 0) lblresult.Text =
Convert.ToString(int.Parse(txta.Text) /
int.Parse(txtb.Text)); } break; default: // break; } } } }
Code 3: Default.aspx
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@
Register TagPrefix="main" TagName="cal"
Src="~/Caculator.ascx" %> <!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>Su dung Webcontrol</title> <style type="text/css"> html{ background-color:#e5e5e5} divmain{ background-color:White; margin:15px; padding:5px;
top:30px; left:150px; position:absolute;} </style> </head>
<body> <form id="form1" runat="server"> <div> <div
class="divmain"> <main:cal ID="maincal" runat="server" />
</div> </div> </form> </body> </html>
Sử dụng chỉ dẫn Reference
Khi bạn load 1 Usercontrol với phương thức Page.LoadControl(), UserControl được trả
về như một thực thể của lớp System.Web.UI.WebControl có nghĩa là bao gồm tất cả các thuộc tính tuỳ biến, thuộc tính này không có sẵn như với trường hợp Load UserControl động
Nếu bạn sử dụng Load UserControl động bạn cần ép kiểu của UserControl về đúng kiểu trước khi sử dụng các thuộc tín Để lấy một tham chiếu tới một Usercontrol bạn cần phải
sử dụng chỉ dẫn <%@ Reference %>
Bạn muốn thăm dò ý kiến của mọi người xem họ đã từng sử dụng ngôn ngữ asp cơ bản hay ngôn ngữ asp.net ? Và tuỳ thuộc vào mỗi người họ sẽ chọn asp hay aspnet để đưa ra hiển thị một UserControl