从方法返回UserControl值

时间:2015-08-18 06:35:01

标签: c# asp.net user-controls

控件包含两个文本框现在我想从我在usercontrol中调用它的页面中的这些文本框中获取值

public string MethodHere()
    {
        return "Some Special text Which is only know to this User Control "+ FirstName.Text +" Last Name is "+ LastName.Text;
    }  

我调用我的用户控件的页面我想调用此方法名为" MethodHere"像这样的东西

   UserControls_TestUserControl1 test1 = new UserControls_TestUserControl1();
        lbloutput.Text = "<br/>" +test1.MethodHere();

但是当我调用MethodHere时,它会在FirstName.Text上抛出错误,表示没有设置对象引用。

注意:我使用这种从UserControl获取价值的方式

我也尝试了这个,但这不是我正在寻找的

foreach (Control item in ctrl.Controls)
        {
            if (item.GetType().Name=="TextBox")
            {
                TextBox txt = (TextBox)item;
                output+=" you Wrote: "+ txt.Text+" <br/>";
            }
        }

现在出现的问题是为什么这段代码不适合我,因为我想得到一些只有这个用户控件知道的特殊文本,我可以在这里得到一些东西。

1 个答案:

答案 0 :(得分:0)

您可以直接转换usercontrol中存在的文本框控件,并使用它的Text属性,如下所示: -

TextBox FirstName= (TextBox)this.UserControls_TestUserControl1ID.FindControl("FirstName");
TextBox LastName= (TextBox)this.UserControls_TestUserControl1ID.FindControl("LastName");

然后你可以直接得到文字: -

lbloutput.Text = "Some Special text Which is only know to this User Control " 
                  + FirstName.Text + "Last Name is" + LastName.Text;

<强>更新

如果要调用UserControl中存在的方法,请在标记页面中定义时为控件分配ID: -

<UCL:TestUserControl ID="TestCtrl" runat="server" />

,只需使用此ID来调用您的方法: -

lbloutput.Text = "<br/>" + TestCtrl.MethodHere();