Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net从aspx页访问用户控件的控件_Asp.net_User Controls - Fatal编程技术网

Asp.net从aspx页访问用户控件的控件

Asp.net从aspx页访问用户控件的控件,asp.net,user-controls,Asp.net,User Controls,我有一个用户控件,它有一个方法,当点击aspx页面上的按钮时执行,我在方法中传递用户控件的两个ID,现在我想获得用户控件中文本框的值,但不幸的是,它无法识别我编码的文本框:- //Method to copy values from one control into another public void copyInfo(Control ctrl1, Control ctrl2) { List<string> vals = new Li

我有一个用户控件,它有一个方法,当点击aspx页面上的按钮时执行,我在方法中传递用户控件的两个ID,现在我想获得用户控件中文本框的值,但不幸的是,它无法识别我编码的文本框:-

 //Method to copy values from one control into another
        public void copyInfo(Control ctrl1, Control ctrl2) {  
            List<string> vals = new List<string>();
            foreach (Control c in ctrl1.Controls)
            {
                if (c is TextBox)
                {    
                    if (string.IsNullOrEmpty(((TextBox)c).Text)) { }
                    else {
                   //values from textbox
                        vals.Add(((TextBox)c).Text);
                    }
                }

                              .............
                                ..........
                                  ......
//将值从一个控件复制到另一个控件的方法
公共无效复制信息(控制ctrl1,控制ctrl2){
List VAL=新列表();
foreach(ctrl1.控件中的控件c)
{
如果(c是文本框)
{    
if(string.IsNullOrEmpty(((TextBox)c.Text)){}
否则{
//文本框中的值
vals.Add(((文本框)c).Text);
}
}
.............
..........
......

如何获取textbox控件及其值。

我会在UserControl上添加一个公共属性,例如:

public string SomeTextboxValue
{
  get
  {
    return SomeTextBox.Text;
  }

  set
  {
    SomeTextBox.Text = value;
  }
}
然后,您需要将控件转换为其实际类型,而不是泛型
控件
类:

SomeControl someControl1 = (SomeControl)ctrl1;
SomeControl someControl2 = (SomeControl)ctrl2;
someControl1.SomeTextboxValue = someControl2.SomeTextboxValue;
或者另一种方式,取决于副本中的发件人和目的地

更新以讨论动态控制 如果控件是动态创建的,而您在回发时找不到它,可能是因为您没有在回发时重新创建控件。我发现本系列文章在尝试了解如何使用和处理动态控件中的数据时非常有趣:

这是第三部分的链接,但其中重要的部分涵盖了您的场景:

创建自定义客户端属性UI并加载客户端的 数据库中的当前值

以编程方式将Web控件添加到ASP.NET页面时 必须将控件添加到每个页面的 页面访问。这包括第一次页面访问和所有后续访问 回发邮件


SomeTextBox这是干什么用的?请告诉我如何使用你的代码,我正在动态创建和添加textbox。啊,好的,你应该更新你的问题,以明确这是一个动态文本框,因为它改变了问题。感谢rtpHarry ur链接帮助我。