这个网上找了好久只找到两个方法, 这个试了成功了, 也简单, 具体正规的方法应该怎么做, 我也不清楚, 实际项目中用户控件用得多么? 现在只是糊里糊涂的用着
转自http://jackyrong.javaeye.com
"
在asp.net 2.0中,要在不同的web控件之间互相调用,必须要<%@ Reference VirtualPath="另一控件名称“>
来引用,举例如下
default.aspx:
顶上加这两句
<%
@ Register Src
=
"
~/WebUserControl1.ascx
"
TagName
=
"
WebUserControl
"
TagPrefix
=
"
uc1
"
%>
<% @ Register Src = " ~/WebUserControl2.ascx " TagName = " WebUserControl2 " TagPrefix = " uc2 " %>
<% @ Register Src = " ~/WebUserControl2.ascx " TagName = " WebUserControl2 " TagPrefix = " uc2 " %>
下面是
<
form id
=
"
form1
"
runat
=
"
server
"
>
< uc1:WebUserControl id = " WebUserControl1 " runat = " server " >
< uc1:WebUserControl id = " WebUserControl1 " runat = " server " >
</
uc1:WebUserControl
>
< uc2:WebUserControl2 ID = " WebUserControl2_1 " runat = " server " />
</ form >
我们要实现的是,按下控件1的按钮后,将在控件2的文本框中显示出指定的文本
在首页里,分别调用了控件1和控件2
webcontrol.ascx:
<%
@ Control Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
WebUserControl.ascx.cs
"
Inherits
=
"
WebUserControl
"
%>
<% @ Reference VirtualPath = " ~/WebUserControl2.ascx " %>
< asp:Button ID = " Button1 " runat = " server " OnClick = " Button1_Click " Text = " Button " />
<% @ Reference VirtualPath = " ~/WebUserControl2.ascx " %>
< asp:Button ID = " Button1 " runat = " server " OnClick = " Button1_Click " Text = " Button " />
这里放置一个按钮,然后用reference来引用控件2
webcontrol.ascx.cs:
protected
void
Button1_Click(
object
sender, EventArgs e)
{
WebUserControl2 w = Page.FindControl( " WebUserControl2_1 " ) as WebUserControl2;
w.Text = " Hello all! " ;
}
{
WebUserControl2 w = Page.FindControl( " WebUserControl2_1 " ) as WebUserControl2;
w.Text = " Hello all! " ;
}
对于控件2:
<%
@ Control Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
WebUserControl2.ascx.cs
"
Inherits
=
"
WebUserControl2
"
%>
< asp:TextBox ID = " TextBox1 " runat = " server " ></ asp:TextBox >
< asp:TextBox ID = " TextBox1 " runat = " server " ></ asp:TextBox >
控件2的codebehind代码:
public
partial
class
WebUserControl2 : System.Web.UI.UserControl
{
protected void Page_Load( object sender, EventArgs e)
{
}
public string Text
{
set { TextBox1.Text = value; }
}
}
{
protected void Page_Load( object sender, EventArgs e)
{
}
public string Text
{
set { TextBox1.Text = value; }
}
}
"
里面的Page.FindControl如果使用出错的话请看下一篇文章