如何获取用户控件里asp.net服务器控件的属性值

时间:2021-09-02 00:58:41
我是新人,求教  谢谢
我用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 楼 hjywyj 的回复:
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;


+1

#3


用户控件的内部属性的实现方式应该封装起来,不管你是使用Label还是别的什么控件(例如使用Image来对应),对外都应该是隐藏的。

对于用户控件的接口在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


该回复于2012-01-29 09:19:34被版主删除

#5


多谢各位了

#6


引用 1 楼 hjywyj 的回复:
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;


你好能不能在请教一下,现在我在用户控件上有一个变量,这个变量是从数据库里调出来的, 比如:string a;
在父页上将其赋 string b; 怎么赋值?

#7


引用 6 楼 cnbluesea 的回复:
引用 1 楼 hjywyj 的回复:
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;


你好能不能在请教一下,现在我在用户控件上有一个变量,这个变量是从数据库里调出来的, 比如:string a;
在父页上将其赋 string b; 怎么赋值?

是不是想给label重新赋值?
((Label)(WebUserControl11.FindControl("Label1"))).Text="123";

#8


不是的, 就是说现在 在用户控件里有一个 变量,这个变量的值是从数据库里获取的,是不定值,在用控件里获取后,我怎么给他传递到付页面的.cs文件里的变量中,而不用控件

#1


Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;

#2


引用 1 楼 hjywyj 的回复:
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;


+1

#3


用户控件的内部属性的实现方式应该封装起来,不管你是使用Label还是别的什么控件(例如使用Image来对应),对外都应该是隐藏的。

对于用户控件的接口在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


该回复于2012-01-29 09:19:34被版主删除

#5


多谢各位了

#6


引用 1 楼 hjywyj 的回复:
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;


你好能不能在请教一下,现在我在用户控件上有一个变量,这个变量是从数据库里调出来的, 比如:string a;
在父页上将其赋 string b; 怎么赋值?

#7


引用 6 楼 cnbluesea 的回复:
引用 1 楼 hjywyj 的回复:
Label5.Text=((Label)(WebUserControl11.FindControl("Label1"))).Text ;


你好能不能在请教一下,现在我在用户控件上有一个变量,这个变量是从数据库里调出来的, 比如:string a;
在父页上将其赋 string b; 怎么赋值?

是不是想给label重新赋值?
((Label)(WebUserControl11.FindControl("Label1"))).Text="123";

#8


不是的, 就是说现在 在用户控件里有一个 变量,这个变量的值是从数据库里获取的,是不定值,在用控件里获取后,我怎么给他传递到付页面的.cs文件里的变量中,而不用控件