Xây dựng và sử dụng các điều khiển do người dùng tạo ra
0 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 ...
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)
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" CommandArgument="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 (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.