我用vs2010做了一个小项目,其中 用到了用户控件:
现在 我建立了一个WebUserControl1.ascx用户控件页面 和建立一个UserControl1.aspx并在UserControl1.aspx内引用了WebUserControl1.ascx
页面代码分别如下:
WebUserControl1.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="BlueBoss.Web.controls.WebUserControl1" %>
<asp:Label ID="Label1" runat="server" Text="Label值一WebUser"></asp:Label><br /><br />
WebUserControl1.ascx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BlueBoss.Web.controls
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
UserControl1.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserControl1.aspx.cs" Inherits="BlueBoss.Web.UserControl1" %>
<%@ Register src="controls/WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>
<!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></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
<asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
UserControl1.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BlueBoss.Web
{
public partial class UserControl1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
我现在想把 <asp:Label ID="Label1" runat="server" Text="Label值一WebUser"></asp:Label> 的text的值 传给 UserControl1.aspx 中 的 <asp:Label ID="Labe5" runat="server" Text="Label"></asp:Label> 的text
我想用后台C# 来传递
谢谢
8 个解决方案
#1
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;
#2
+1
#3
用户控件的内部属性的实现方式应该封装起来,不管你是使用Label还是别的什么控件(例如使用Image来对应),对外都应该是隐藏的。
对于用户控件的接口在ide上的使用,可以参考帖子: http://topic.csdn.net/u/20120119/22/1a62b1a4-478c-4361-872e-32f97bd5b3c0.html
假设你在用户控件上设计一个属性“警报级别”,然后假设使用Label来保存它,你可以写
但是你也可能随后就把它改为用Image来展示警告级别,而将int值存入ViewState。
总之,既然你开发一种封装好的控件,那么在其接口定义上要有一点高度,不要想当然地搞什么FindControl。更何况,对于稍微复杂一点的实际情况,大多数时候你去调用一句FindControl命令并不能直接返回内部的控件,这就好像你从页面上也不可能用 Page.FindControl 去掉用到自己的用户控件内部的子控件一个道理。。
对于用户控件的接口在ide上的使用,可以参考帖子: http://topic.csdn.net/u/20120119/22/1a62b1a4-478c-4361-872e-32f97bd5b3c0.html
假设你在用户控件上设计一个属性“警报级别”,然后假设使用Label来保存它,你可以写
public int 警报级别
{
get
{
EnsureChildControls();
return int.Parse(this.Label1.Text);
}
set
{
EnsureChildControls();
this.Label1.Text = value.ToString();
}
}
但是你也可能随后就把它改为用Image来展示警告级别,而将int值存入ViewState。
总之,既然你开发一种封装好的控件,那么在其接口定义上要有一点高度,不要想当然地搞什么FindControl。更何况,对于稍微复杂一点的实际情况,大多数时候你去调用一句FindControl命令并不能直接返回内部的控件,这就好像你从页面上也不可能用 Page.FindControl 去掉用到自己的用户控件内部的子控件一个道理。。
#4
#5
多谢各位了
#6
你好能不能在请教一下,现在我在用户控件上有一个变量,这个变量是从数据库里调出来的, 比如:string a;
在父页上将其赋 string b; 怎么赋值?
#7
是不是想给label重新赋值?
((Label)(WebUserControl11.FindControl("Label1"))).Text="123";
#8
不是的, 就是说现在 在用户控件里有一个 变量,这个变量的值是从数据库里获取的,是不定值,在用控件里获取后,我怎么给他传递到付页面的.cs文件里的变量中,而不用控件
#1
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;
#2
+1
#3
用户控件的内部属性的实现方式应该封装起来,不管你是使用Label还是别的什么控件(例如使用Image来对应),对外都应该是隐藏的。
对于用户控件的接口在ide上的使用,可以参考帖子: http://topic.csdn.net/u/20120119/22/1a62b1a4-478c-4361-872e-32f97bd5b3c0.html
假设你在用户控件上设计一个属性“警报级别”,然后假设使用Label来保存它,你可以写
但是你也可能随后就把它改为用Image来展示警告级别,而将int值存入ViewState。
总之,既然你开发一种封装好的控件,那么在其接口定义上要有一点高度,不要想当然地搞什么FindControl。更何况,对于稍微复杂一点的实际情况,大多数时候你去调用一句FindControl命令并不能直接返回内部的控件,这就好像你从页面上也不可能用 Page.FindControl 去掉用到自己的用户控件内部的子控件一个道理。。
对于用户控件的接口在ide上的使用,可以参考帖子: http://topic.csdn.net/u/20120119/22/1a62b1a4-478c-4361-872e-32f97bd5b3c0.html
假设你在用户控件上设计一个属性“警报级别”,然后假设使用Label来保存它,你可以写
public int 警报级别
{
get
{
EnsureChildControls();
return int.Parse(this.Label1.Text);
}
set
{
EnsureChildControls();
this.Label1.Text = value.ToString();
}
}
但是你也可能随后就把它改为用Image来展示警告级别,而将int值存入ViewState。
总之,既然你开发一种封装好的控件,那么在其接口定义上要有一点高度,不要想当然地搞什么FindControl。更何况,对于稍微复杂一点的实际情况,大多数时候你去调用一句FindControl命令并不能直接返回内部的控件,这就好像你从页面上也不可能用 Page.FindControl 去掉用到自己的用户控件内部的子控件一个道理。。
#4
#5
多谢各位了
#6
你好能不能在请教一下,现在我在用户控件上有一个变量,这个变量是从数据库里调出来的, 比如:string a;
在父页上将其赋 string b; 怎么赋值?
#7
是不是想给label重新赋值?
((Label)(WebUserControl11.FindControl("Label1"))).Text="123";
#8
不是的, 就是说现在 在用户控件里有一个 变量,这个变量的值是从数据库里获取的,是不定值,在用控件里获取后,我怎么给他传递到付页面的.cs文件里的变量中,而不用控件