当前位置:首页 » 网页前端 » cweb用户控件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

cweb用户控件

发布时间: 2022-06-30 20:35:01

㈠ ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为()

BtagName就是指明名称,tagprefix是引用空间名,src是链接该控件的路径

㈡ ASP.NET里用户控件和WEB窗体的区别

用户控件使程序员能够很容易地跨ASP.NET WEB应用程序划分和重复使用公共UI功能。与WEB窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。此外,与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。但与WEB窗体页不同的是,不能独立地请求用户控件,用户控件必须包括在WEB窗体页内才能使用。

与服务器端包含文件(SSI)相比,用户控件通过访问由ASP.NET提供的对象模型支持,使程序员具有更大的灵活性。程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何ASP.NET服务器控件一样。

尽管在创作用户控件时需要选择一种语言,但程序员可以将多个用户控件包含在用多种语言创作的一个WEB窗体页中。例如,可以用Visual Basic.NET创造一个用户控件,导入来自XML文件的数据,再用C#创建另一个用户控件,该控件包含一个订单窗体,然后在同一个WEB窗体页中包括这两个控件。

此外,可以独立于包含用户控件的WEB窗体页中除该控件以外的部分来缓存该控件的输出。这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。例如,如果用户控件包含提出数据库请求的ASP.NET服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。

2、创建用户控件

可以通过使用文本或HTML编辑器以声明方式创建用户控件。用户控件声明语法与创建WEB窗体页所采用的语法十分类似;两者的主要差别在于用户控件在内容周围不包括<html>、<body>和<form>元素。在包含用户控件的WEB窗体页中包括这些元素。

用户控件可以像文本文件一样简单,或者它们可以包含其他ASP.NET服务器控件。以下过程简要介绍了一个可包括在应用程序多个页上的简单登录窗体。

在代码声明块中公开属性、事件处理程序以及要包括在用户控件功能中的其他任何代码。在使用用户控件的属性时有两个选择。首先,可以定义用户控件的新属性并操作它们。其次,可以操作构成用户控件的服务器控件的属性。例纾�谟没Э丶�猩�鱐extbox WEB服务器控件,并向它提供一个ID为PASSWORD,则可以通过使用PASSWORD. Text语法来操作其Text属性。

【注意】当用户控件包括在WEB窗体页中时,此用户控件中包含的任何ASP.NET服务器控件的所有属性和方法都将提升为此用户控件的公共属性和方法。

步骤1:以下代码示例声明映射到步骤1中代码的文本框的UserId和Password属性。可以通过声明或编程的方式,在任何包含此用户控件的WEB窗体页中操作这些属性。

Public MustInherit Class Loginform
Inherits System.Web.UI.UserControl
Protected WithEvents User As System.Web.UI.WebControls.TextBox
Protected WithEvents Pass As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub
Public Property UserId() As [String]
Get
Return User.Text
End Get
Set(ByVal Value As [String])
User.Text = Value
End Set
End Property
Public Property Password() As [String]
Get
Return Pass.Text
End Get
Set(ByVal Value As [String])
Pass.Text = Value
End Set
End Property
End Class

步骤2:创建该用户控件显示的UI元素。以下代码创建与来自步骤1的代码进行交互的登录窗体。

【注意】将此用户控件包括在Web窗体页中时,需要在@Register指令的Src属性中包括此文件名称以及该文件的路径。

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="Logonform.ascx.vb" Inherits="logintest.Logonform" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<TABLE cellSpacing="15">
<TR>
<TD><B>用户姓名: </B></TD>
<TD><ASP:TextBox id="User" runat="server"></ASP:TextBox></TD>
</TR>
<TR>
<TD><B>用户口令: </B></TD>
<TD><ASP:TextBox id="Pass" runat="server" TextMode="Password"></ASP:TextBox></TD>
</TR>
<TR>
<TD></TD>
<TD><ASP:Button id="Button1" runat="server" Text="登录" BorderStyle="Groove"></ASP:Button></TD>
</TR>
</TABLE>
3、调用用户控件

只有当包括在WEB窗体页中时,用户控件才可以工作。当一个请求到达某一页而该页包含用户控件时,该用户控件将经历任何服务器控件所要经历的所有处理阶段。

在 WEB 窗体页中包括用户控件的方法很简单。

在要包含用户控件的 WEB 窗体页中,声明一个@Register指令,该指令包括:

tagprefix属性,该属性将前缀与用户控件相关联。此前缀将包括在用户控件元素的开始标记中。

tagname属性,该属性将名称与用户控件相关联。此名称将包括在用户控件元素的开始标记中。

Src属性,该属性定义要包括在WEB窗体页中的用户控件文件的虚拟路径。

例如,以下代码将注册在文件LoginForm.ascx中定义的用户控件。该控件还被指定有标记前缀Acme和标记名称Login。

<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>

使用自定义服务器控件语法在HtmlForm服务器控件的开始标记和结束标记之间 (<form runat=server></form>) 声明该用户控件元素。例如,要声明在上一步导入的控件,使用以下语法。

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="logintest.aspx.vb" Inherits="logintest.WebForm1"%>
<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<Acme:LoginForm id=" LoginForm " runat="server"/>
</form></BODY>
</HTML>

【注意】无论在WEB窗体页上包括了多少个ASP.NET服务器控件(用户控件和其他任何控件),都应只在WEB窗体页上包括一个HtmlForm服务器控件。此控件的开始和结束标记之间应包括所有服务器控件。
4、用户控件使用小结

(1)用户控件使开发人员能够使用编写WEB窗体页的相同编程技巧轻松地定义自定义控件。 作为约定,用.ascx文件扩展名指示这样的控件。这样可以确保用户控件文件不能作为独立的WEB窗体页执行。

(2)用户控件通过Register指令包括在另一WEB窗体页中,该指令指定TagPrefix、TagName和Src location。

(3)注册了用户控件后,可以像普通的服务器控件那样将用户控件标记放置在WEB窗体页中(包括runat="server"属性)。在包含WEB窗体页中将用户控件的公共字段、属性和方法提升为该控件的公共属性(标记属性)和方法。

(4)用户控件参与每个请求的整个执行生存期,并且可以处理自己的事件,封装来自包含WEB窗体页的一些页逻辑。

(5)用户控件不应包含任何窗体控件,而应依靠其包含WEB窗体页在必要时包括窗体控件。

(6)可以使用System.WEB.UI.Page类的LoadControl方法以编程方式创建用户控件。用户控件的类型由ASP.NET运行库决定,遵循约定文件名_扩展名。

(7)只有当为用户控件包括了Register指令时,用户控件的强类型才能由包含WEB窗体页使用(即使没有实际声明的用户控件标记)。

5、结束语

在编写WEB应用程序时,如果将可能重复出现的元素都用用户控件来实现,那将大大减少维护代码的代价。而且在修改代码时,记得修改一段代码却忘了修改另一段同样代码的情况也将不存在了。代码越短,出现错误的因素越少,出现错误的可能性就越小。

㈢ 关于asp.net程序中的web用户控件属性的问题(急!!!)

做好的自定义控件肯定是要注册一下的撒!
然后才会显示咯、、、、

㈣ Web.Config配置用户控件的问题

<controls>
<add tagPrefix="WUC" tagName="PageList" src="~/hl/account/pagelist.ascx" />
<add tagPrefix="WUC" tagName="GroupNav" src="~/hl/account/groupNav.ascx" />
<add tagPrefix="WUC" tagName="LogTop" src="~/hl/account/LogTop.ascx" />
<add tagPrefix="ControlVendor" assembly="ControlVendorAssembly"/>
</controls>
去掉

㈤ C#怎么制作用户控件

首先,准备好开发环境,启动Visual Studio.net Beta2,选择菜单文件->新建->项目,项目类型选择Visual C#项目,模板选择Windows控件库,名称输入Percent,按确定,建立一个项目。
切换到Percent.cs[设计]页面,在解决方案资源管理器中将UserControl1.cs改为Percent.cs。从工具箱中拖一个 Label控制到设计面板上,设置该Label的属性:Name: lbPercent,BackColor: Transparent,Text: 100%,并拖拉Label的边框,使其大小能刚好显示出Text。右键在设计面板上单击,从弹出菜单中选择查看代码,打开代码编辑页面。
可以看到名字空间为Percent,将光标移动到public class Percent : System.Windows.Forms.UserControl以下,输入下面几行:
private int iCurPercent = 0;
private Color clPercent = Color.Blue;
private Color clText = Color.Black;
以上定义并初始化了几个私有变量,iCurPercent表示当前的百分比进度,clPercent为进度的颜色,clText为中间显示的百分比文本的颜色。
本控制拥有三个属性,分别设置进度条和文字的显示颜色,以及当前进度。还定义了一个OnPercentChange事件,在百分比改变时触发该事件。
在protected override void Dispose( bool disposing )后面添加以下内容:
public delegate void PercentChangeHandler(int CurrentPercent);
public event PercentChangeHandler OnPercentChange;public int CurrentPercent
{
get
{
return iCurPercent;
}
set
{
if ((value <= 100) && (value >= 0))
{
iCurPercent = value;
if (OnPercentChange != null)
OnPercentChange(iCurPercent);
this.Invalidate();
}
}
}public Color PercentBackColor
{
get
{
return clPercent;
}
set
{
clPercent = value;
this.Invalidate();
}
}public Color PercentTextColor
{
get
{
return clText;
}
set
{
clText = value;
this.Invalidate();
}
}
以上首先定义了事件,并在百分比改变时触发。然后是三个属性的实现。下面,需要在Paint事件里改变Percent控制的显示状态。切换到设计页面,选择整个设计面板,在属性视图中将光标移动到Paint,按回车,代码页面里就自动为Paint事件建立了框架,其中其一个参数为System.Windows.Forms.PaintEventArgs e,可以用这个参数干很多事情。先输入以下画百分比控制边界的代码:
Pen penBlack = new Pen(Color.Black, 1);
Point ptStart = new Point(0, 0);
Point ptEnd = new Point(this.Width - 1, 0);
e.Graphics.DrawLine(penBlack, ptStart, ptEnd);
ptStart = new Point(0, 0);
ptEnd = new Point(0, this.Height);
e.Graphics.DrawLine(penBlack, ptStart, ptEnd);Pen penWhite = new Pen(Color.White, 1);
ptStart = new Point(this.Width - 1, 0);
ptEnd = new Point(this.Width - 1, this.Height);
e.Graphics.DrawLine(penWhite, ptStart, ptEnd);
ptStart = new Point(0, this.Height - 1);
ptEnd = new Point(this.Width, this.Height - 1);
e.Graphics.DrawLine(penWhite, ptStart, ptEnd);SolidBrush brushFill = new SolidBrush(PercentBackColor);
Rectangle rcFill = new Rectangle(2, 2, iCurPercent * (this.Width - 3) / 100, this.Height - 3);
e.Graphics.FillRectangle(brushFill, rcFill);lbPercent.Left = this.Width / 2 - lbPercent.Width / 2;
lbPercent.Top = this.Height / 2 - lbPercent.Height / 2;
lbPercent.Text = iCurPercent.ToString() + "%";
lbPercent.ForeColor = PercentTextColor;在控制大小发生变化时也应该刷新,在设计页面,光标移动到Resize,回车,在Resize事件中写下:this.Invalidate();
这样,这个百分比控制就编完了。下面,我们在编写一个测试程序来测试这个控制。选择菜单:文件->添加项目->新建项目,项目类型选择 Visual C#项目,模板选择Windows应用程序,取名为TestPercent,按确定,建立一个Windows应用程序框架。由于是添加了一个新项目,因此,解决方案资源管理器中就有了两个项目:Percent和TestPercent。鼠标在TestPercent上单击右键,从弹出菜单中选择“添加引用”,切换到“项目”页面,项目名称应为“Percent”,双击该项目名称,把它加到选定的组件里面,按确定。这样,Percent组件就加到测试工程里了。用过VC的#import指令或者VB的引用的人对这个操作也许会感觉比较亲切。
从工具箱中找到Percent控制,将其拖到测试工程的设计面板上摆好,再从工具箱里拖一个Button和一个Timer放好。双击Button,在其事件中写下:timer1.Enabled = true; 再回到设计面板,双击Timer,在其事件中写下:percent1.CurrentPercent = percent1.CurrentPercent + 1;将焦点移到用户控制percent1上,找到事件OnPercentChange,回车,在程序框架中写下:this.Text = CurrentPercent.ToString(); 这样,测试程序就完成了。
下面运行程序,将TestPercent设为启动项目,运行,按下button1,可以看到进度增加的同时,窗口标题也在发生变化。
通过这个简单的用户控制的编写,我们可以体会到C#编程的简便性,对其开发环境有个基本的了解。该控制也可以很容易地被其他开发工具,比如Visual Basic.net使用。
以上程序在C366, 128MB, Windows2000 Advanced Server SP2,Visual Studio.net Beta2中文版下编译通过。

㈥ C#怎么添加用户控件UserControl1

在你需要引入该用户控件的页面顶部加入类似以下代码
<!--Src是web用户控件所在路径,TagName(组件名称)随便取,TagPrefix标签前缀-->
<%@
Register
Src="/Components/FriendGroup.ascx"
TagName="friendgroup"
TagPrefix="uc1"
%>
当你需要用该控件时,就像平时定义textbox或者button控件一样
<!--uc1即前面注册组件的TagPrefix,
friendgroup即前面注册组件里面的TagName-->
<uc1:friendgroup
ID="friendgroup1"
runat="server"
/>
其实这更类似于java里面的自定义标签吧!呵呵