创建用户控件
简单例子:
RandomImage.ascx
引用:
ShowRandomImage.aspx
理解:
其实Ascx文件有点像是xml文件,一定要先注册:
<%@ Register TagPrefix="user" TagName="RandomImage" Src="~/RandomImage.ascx" %>
注册有前缀,等。更多的有点像是tld文件。
参照Java。
用户控件和Asp.net页面之间最大的不同是:
用户控件可以在Asp.net页面中声明。在创建用户控件时,也相当于创建了一个定制控件。
在页面中使用用户控件之前,必须先进行注册。
1、在Web配置文件中注册用户控件
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="user" tagName="RandomImage" Src="~/RandomImage.ascx" />
</controls>
</pages>
</system.web>
</configuration>
在Web配置文件中注册用户控件时有一个重要的限制:
用户控件不能和使用用户控件的页面位于同一个文件夹中。所以应该将所有的用户控件都保存在同一个文件夹中如UserControls。
2、暴露用户控件的属性
ShowDeclarative.aspx
3、暴露用户控件的事件
TabStrip.ascx
ShowTabStrip.aspx
2011-4-29 10:42 danny
4、创建AddressForm控件
AddressForm.ascx
Checkout.aspx
2011-4-29 11:20 danny
简单例子:
RandomImage.ascx
<%@ Control Language="C#" ClassName="RandomImage" %> <%@ Import Namespace="System.IO" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { string imageToDisplay = GetRandomImage(); imgRandom.ImageUrl = Path.Combine("~/Images", imageToDisplay); lblRandom.Text = imageToDisplay; } private string GetRandomImage() { Random rnd = new Random(); string[] images = Directory.GetFiles(MapPath("~/Images"), "*.jpg"); string imageToDisplay = images[rnd.Next(images.Length)]; return Path.GetFileName(imageToDisplay); } </script> <asp:Image ID="imgRandom" Width="300px" runat="server" /> <br /> <asp:Label ID="lblRandom" runat="server" />
引用:
ShowRandomImage.aspx
<%@ Page Language="C#" %> <%@ Register TagPrefix="user" TagName="RandomImage" Src="~/RandomImage.ascx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Show RandomImage</title> </head> <body> <form id="form1" runat="server"> <div> <user:RandomImage ID="RandomImage1" runat="server" /> </div> </form> </body> </html>
理解:
其实Ascx文件有点像是xml文件,一定要先注册:
<%@ Register TagPrefix="user" TagName="RandomImage" Src="~/RandomImage.ascx" %>
注册有前缀,等。更多的有点像是tld文件。
参照Java。
用户控件和Asp.net页面之间最大的不同是:
用户控件可以在Asp.net页面中声明。在创建用户控件时,也相当于创建了一个定制控件。
在页面中使用用户控件之前,必须先进行注册。
1、在Web配置文件中注册用户控件
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="user" tagName="RandomImage" Src="~/RandomImage.ascx" />
</controls>
</pages>
</system.web>
</configuration>
在Web配置文件中注册用户控件时有一个重要的限制:
用户控件不能和使用用户控件的页面位于同一个文件夹中。所以应该将所有的用户控件都保存在同一个文件夹中如UserControls。
2、暴露用户控件的属性
<%@ Control Language="C#" ClassName="PropertyRandomImage" %> <%@ Import Namespace="System.IO" %> <script runat="server"> private string _imageFolderPath = "~/Images"; public string ImageFolderPath { get { return _imageFolderPath; } set { _imageFolderPath = value; } } protected void Page_Load(object sender, EventArgs e) { string imageToDisplay = GetRandomImage(); imgRandom.ImageUrl = Path.Combine(_imageFolderPath, imageToDisplay); lblRandom.Text = imageToDisplay; } private string GetRandomImage() { Random rnd = new Random(); string[] images = Directory.GetFiles(MapPath(_imageFolderPath), "*.jpg"); string imageToDisplay = images[rnd.Next(images.Length)]; return Path.GetFileName(imageToDisplay); } </script> <asp:Image ID="imgRandom" Width="300px" runat="server" /> <br /> <asp:Label ID="lblRandom" runat="server" />
ShowDeclarative.aspx
<%@ Page Language="C#" %> <%@ Register TagPrefix="user" TagName="PropertyRandomImage" Src="~/PropertyRandomImage.ascx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Show RandomImage</title> </head> <body> <form id="form1" runat="server"> <div> <user:PropertyRandomImage ID="RandomImage1" ImageFolderPath="~/Images2" runat="server" /> </div> </form> </body> </html>
3、暴露用户控件的事件
TabStrip.ascx
<%@ Control Language="C#" ClassName="TabStrip" %> <%@ Import Namespace="System.Collections.Generic" %> <script runat="server"> public event EventHandler TabClick; public int SelectedIndex { get { return dlstTabStrip.SelectedIndex; } } protected void dlstTabStrip_SelectedIndexChanged(object sender, EventArgs e) { if (TabClick != null) { TabClick(this, EventArgs.Empty); } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { List<string> tabs = new List<string>(); tabs.Add("Products"); tabs.Add("Services"); tabs.Add("About"); dlstTabStrip.DataSource = tabs; dlstTabStrip.DataBind(); dlstTabStrip.SelectedIndex = 0; } } </script> <asp:DataList ID="dlstTabStrip" runat="server" RepeatDirection="Horizontal" CssClass="tabs" ItemStyle-CssClass="tab" SelectedItemStyle-CssClass="selectedTab" OnSelectedIndexChanged="dlstTabStrip_SelectedIndexChanged"> <ItemTemplate> <asp:LinkButton ID="lnkTab" Text='<%# Container.DataItem %>' CommandName="Select" runat="server" /> </ItemTemplate> </asp:DataList>
ShowTabStrip.aspx
<%@ Page Language="C#" %> <%@ Register TagPrefix="user" TagName="TabStrip" Src="~/TabStrip.ascx" %> <!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 TabStrip1_TabClick(object sender, EventArgs e) { MultiView1.ActiveViewIndex = TabStrip1.SelectedIndex; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <style type="text/css"> html { background-color: Silver; font: 14px Georgia,Serif; } .tabs a { color: Blue; text-decoration: none; font: 14px Arial,Sans-Serif; } .tab { background-color: #eeeeee; padding: 5px; border: Solid 1px black; border-bottom: none; } .selectedTab { background-color: White; padding: 5px; border: Solid 1px black; border-bottom: none; } .views { background-color: White; width: 400px; border: Solid 1px black; padding: 10px; } </style> <title></title> </head> <body> <form id="form1" runat="server"> <div> <user:TabStrip ID="TabStrip1" runat="server" OnTabClick="TabStrip1_TabClick" /> <div class="views"> <br /> <asp:MultiView ID="MultiView1" ActiveViewIndex="0" runat="server"> <asp:View ID="Products" runat="server"> <h1> Products</h1> We sell a variety of useful products... </asp:View> <asp:View ID="Services" runat="server"> <h1> Services</h1> We offer a number of services... </asp:View> <asp:View ID="About" runat="server"> <h1> About</h1> We were the first company to offer products and services... </asp:View> </asp:MultiView> </div> </div> </form> </body> </html>
2011-4-29 10:42 danny
4、创建AddressForm控件
AddressForm.ascx
<%@ Control Language="C#" ClassName="AddressForm" %> <script runat="server"> public string Title { get { return ltlTitle.Text; } set { ltlTitle.Text = value; } } public string Street { get { return txtStreet.Text; } set { txtStreet.Text = value; } } public string City { get { return txtCity.Text; } set { txtCity.Text = value; } } public string State { get { return txtState.Text; } set { txtState.Text = value; } } public string PostalCode { get { return txtPostCode.Text; } set { txtPostCode.Text = value; } } </script> <fieldset> <legend> <asp:Literal ID="ltlTitle" Text="Address Form" runat="server" /> </legend> <div class="addressLabel"> <asp:Label ID="lblStreet" Text="Street" AssociatedControlID="txtStreet" runat="server" /> </div> <div class="addressField"> <asp:TextBox ID="txtStreet" runat="server" /> <asp:RequiredFieldValidator ID="reqStreet" Text="(required)" ControlToValidate="txtStreet" runat="server" /> </div> <br class="clear" /> <div class="addressLabel"> <asp:Label ID="lblCity" Text="City:" AssociatedControlID="txtCity" runat="server" /> </div> <div class="addressField"> <asp:TextBox ID="txtCity" runat="server" /> <asp:RequiredFieldValidator ID="reqCity" Text="(required)" ControlToValidate="txtCity" runat="server" /> </div> <br class="clear" /> <div class="addressLabel"> <asp:Label ID="lblState" Text="State" AssociatedControlID="txtState" runat="server" /> </div> <div class="addressField"> <asp:TextBox ID="txtState" runat="server" /> <asp:RequiredFieldValidator ID="reqState" Text="(required)" ControlToValidate="txtState" runat="server" /> </div> <br class="clear" /> <div class="addressLabel"> <asp:Label ID="lblPostCode" Text="PostalCode:" AssociatedControlID="txtPostCode" runat="server" /> </div> <div class="addressField"> <asp:TextBox ID="txtPostCode" runat="server" /> <asp:RequiredFieldValidator ID="reqPostCode" Text="(required)" ControlToValidate="txtPostCode" runat="server" /> </div> <br class="clear" /> </fieldset>
Checkout.aspx
<%@ Page Language="C#" %> <%@ Register TagPrefix="user" TagName="AddressForm" Src="~/AddressForm.ascx" %> <!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 btnSubmit_Click(object sender, EventArgs e) { ltlResults.Text = "<br/> Billing Street:" + AddressForm1.Street; ltlResults.Text += "<br/> Billing City:" + AddressForm1.City; ltlResults.Text += "<br/> Billing State:" + AddressForm1.State; ltlResults.Text += "<br/> Billing Postal Code:" + AddressForm1.PostalCode; ltlResults.Text += "<br/><br/>"; ltlResults.Text += "<br/> Shopping Street:" + AddressForm2.Street; ltlResults.Text += "<br/> Shopping City:" + AddressForm2.City; ltlResults.Text += "<br/> Shopping State:" + AddressForm2.State; ltlResults.Text += "<br/> Shopping Postal Code:" + AddressForm2.PostalCode; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <style type="text/css"> html { background-color: Silver; font: 14px Georgia,Serif; } .content { background-color: White; width: 600px; margin: auto; padding: 20px; } .addressLabel { float: left; width: 100px; padding: 5px; text-align: right; } .addressField { float: left; padding: 5px; } .clear { clear: both; } </style> <title>Check out</title> </head> <body> <form id="form1" runat="server"> <div class="content"> <user:AddressForm ID="AddressForm1" Title="Billing Address" runat="server" /> <br /> <user:AddressForm ID="AddressForm2" Title="Shopping Address" runat="server" /> <br /> <asp:Button ID="btnSubmit" Text="Submit Form" runat="server" OnClick="btnSubmit_Click" /> <hr /> <asp:Literal ID="ltlResults" runat="server" /> </div> </form> </body> </html>
2011-4-29 11:20 danny
发表评论
-
19.5创建分层的SQL数据源控件
2011-06-01 09:18 875创建分层的SQL数据源控件 SqlHierarchicald ... -
19.4使用TreeView控件
2011-05-20 13:27 1244使用TreeView控件 1、声明式地添加树视图节点 Tr ... -
19.3使用Menu控件
2011-05-20 09:16 855使用Menu控件 1、声明式添加Menu条目 MenuHy ... -
7.3动态加载用户控件
2011-05-12 09:18 595动态加载用户控件 可以在运行时动态加载用户控件并将其显示在页 ... -
7.2Ajax和用户控件
2011-05-11 21:25 668Ajax和用户控件 RandomQuotation.ascx ... -
6.4创建全局主题
2011-05-11 09:33 519创建全局主题 可以在一个Web服务器端上的多个程序之间共享同 ... -
6.3在主题中添加CSS
2011-05-10 21:22 515在主题中添加CSS 如果在主题文件夹中添加CSS文件,则在页 ... -
6.2在主题中添加皮肤
2011-05-10 09:09 900在主题中添加皮肤 一个主题可以包含一个或多个皮肤文件。可以通 ... -
6.1创建主题
2011-05-09 22:26 643创建主题 在名为App_Themes的应用程序的文件夹中新增文 ... -
5.3动态加载母版页
2011-05-09 12:50 756动态加载母版页 应用场合: 1)通过加载不同的母版页可以让网站 ... -
5.2修改母版页内容
2011-05-09 09:14 1252修改母版页内容 1、使用Title属性 <%@Pag ... -
5.1创建母版本页
2011-05-06 21:27 650创建母版本页 <%@ Master Language= ... -
4.1.3、上传大文件
2011-05-06 12:55 665上传大文件 上传大文件,需要做些处理 处理大文件时,需要使 ... -
4.1.2、文件保存到数据库
2011-05-06 09:13 5122、文件保存到数据库 上传 <%@ Page La ... -
4.1.1、文件保存到文件夹
2011-05-05 19:22 7412、文件保存到数据库 上传 <%@ Page Lan ... -
4.1接收上传文件
2011-05-05 09:14 607接收上传文件 FileUpload 控件属性 Enabled ... -
3.10创建自定义验证控件
2011-05-04 09:12 537创建自定义验证控件 BaseValidator类 抽象类 必 ... -
3.9使用ValidationSummary控件
2011-05-03 22:43 942使用ValidationSummary控件 在页面中的一处地 ... -
3.8使用CustomValidator控件
2011-05-03 11:21 641使用CustomValidator控件 CustomVali ... -
3.7使用RegularExpressionValidator控件
2011-05-02 19:02 698使用RegularExpressionValidator控件 ...
相关推荐
7.1 创建用户控件 201 7.1.1 在Web配置文件中注册用户控件 203 7.1.2 暴露用户控件的属性 204 7.1.3 暴露用户控件的事件 206 7.1.4 创建AddressForm控件 209 7.2 Ajax和用户控件 214 7.3 动态加载用户控件 215 7.3.1...
1. **多语言支持**:从提供的`zh-CHT`和`en`文件可以看出,此控件支持简体中文和英文,这意味着开发者可以轻松创建多语言网站,满足全球用户的需求。 2. **自定义样式和模板**:AspNetPager 7.1允许开发者自定义...
在实际应用中,开发者需要熟练掌握如何创建、布局、响应用户事件以及管理对话框和子控件,以构建高效且用户体验良好的界面。在07ChildWnd这个压缩包文件中,可能包含了相关的代码示例和教程,可以帮助你更深入地学习...
在LabVIEW 7.1中,用户可以利用其内置的功能进行全屏截图,并将截图结果显示在图片控件中。这在进行实验数据可视化、系统调试或者教学演示时非常有用。 全屏截图功能是LabVIEW的一项实用工具,它允许用户捕捉计算机...
版本7.1.2739是该控件的一个特定发行版,可能包含了各种改进和修复,旨在提升用户体验和性能。在这个版本中,"去除DEMO信息"的描述意味着它不再显示试用版本通常会有的水印或限制提示,更适合用于生产环境。 ...
**WTL合集(7.1和7.5).rar** 是一个包含Windows Template Library (WTL) 版本7.1和7.5的压缩包,专门为Visual C++ 6.0用户提供支持。WTL是Microsoft开发的一个C++库,它允许开发者构建轻量级、高效的Windows应用...
5. **用户界面元素**:包括菜单、对话框、工具栏和状态栏的创建和使用。 6. **资源处理**:如何定义和使用位图、图标、字符串等资源。 7. **命令路由**:WTL的消息处理机制,如何实现命令路由和事件处理。 8. **非...
TMS Component Pack 7.1.3.0是一款针对Delphi和C++Builder开发环境的组件库,它为开发者提供了丰富的控件和工具,旨在提高开发效率,增强应用程序的功能和用户体验。该组件包适用于各种版本的IDE,包括从Delphi 2007...
它具有直观的API和用户友好的界面,使得创建复杂的图表变得简单易行。 在股票分析领域,K线图(也称为日本蜡烛图)是必不可少的工具。TeeChart支持绘制K线图,能够展示开盘价、收盘价、最高价和最低价等关键信息。...
3. **WTL窗口和控件**:熟悉WTL提供的窗口和控件类,了解如何创建和操作它们。 4. **事件处理**:学习如何使用WTL的消息映射机制编写事件处理函数。 5. **实践项目**:通过实际编写小项目,如简单的对话框程序或带有...
它的工作原理是在Chrome内核下嵌入一个ActiveX控件,该控件模拟了Internet Explorer的渲染引擎,使得用户无需切换浏览器即可访问那些需要IE才能正常运行的网页。 其次,"13.1.7.1"这个版本号表明这是该扩展的一个...
87. **MsgBox函数**:显示消息框,允许用户交互。 88. **Not运算符**:逻辑运算符,对表达式求反。 89. **Now函数**:返回当前日期和时间。 90. **Oct函数**:将数值转换为八进制字符串。 91. **On Error语句**...
6. **用户界面(UI)**:CE具有图形用户界面,源码中会有与Windows消息循环、控件交互相关的代码,涉及MFC或WinAPI库。 7. **反反调试**:为了防止被游戏检测到,CE可能会包含一些反反调试技术,例如检查调试器的...
这款控件的强大之处在于它不仅支持单页打印,还能处理多页连续打印任务,使得网页上的内容可以按照用户的需求以定制化的样式输出到打印机上。 首先,"Lodop打印控件"的核心功能在于提供了一个友好的编程接口,让...
TEMS Investigation 7.1 支持以XML或CEL格式创建小区文件,这些文件可以用于记录和管理网络中的小区信息。 #### 8. 连接外部设备 TEMS Investigation 7.1 支持多种外部设备的连接,包括但不限于测试手机、扫频仪和...
9.1.1 用户控件的作用.. 388 9.1.2 了解system.web.ui.usercontrol基类 388 9.2 用户控件应用示例 389 9.2.1 简单用户控件 389 9.2.2 复杂数据绑定用户控件 394 9.3 用户控件缓存 419 9.3.1 asp.net缓存介绍 ...