如何从另一个UserControl引用一个UserControl中的TextBox

时间:2011-01-19 20:33:35

标签: asp.net vb.net user-controls

我在MasterPage上有两个UserControl。 DataEntryUC包含几个TextBoxes和DropDownList。 NavSaveUC包含导航按钮。当用户点击导航按钮时,我将保存从NavSaveUC UserControl输入到DataEntryUC的数据。

我的数据库中有几个表包含与DataEntryUC相关的存储过程名称,控件名称,控件类型,SqlDbTypes等。

如何从NavSaveUC引用DataEntryUC上的文本框?

我一直在使用NavSaveUC的以下代码而没有运气。

Dim MyControlName = "txtFirstName"
Dim MyControlType = "TextBox"
Dim MyStringValue as String
Dim tmpTxtControl as TextBox
Dim tmpDdlControl as DropDownList

Select Case MyControlType
    Case "TextBox"
        tmpTxtControl = CType(Page.FindControl(MyControlName, TextBox)
        MyStringValue = tmpTxtControl.Text                  
    Case "DropDownList"
        tmpDdlControl = CType(Page.FindControl(MyControlName, DropDownList)
        MyStringValue = tmpDdlControl.SelectedValue
End Select

谢谢!

2 个答案:

答案 0 :(得分:1)

将文本框公开为用户控件的属性并以此方式访问它。但是,这种类型的依赖不是最好的做法。

答案 1 :(得分:1)

如果一个用户控件嵌入在另一个用户控件中,则只需将其作为控件的属性公开。但是,如果两个用户控件分别存在于同一页面上,则控件不应直接相互交互以避免控件之间的依赖关系。

相反,您应该将该页面用作两个控件之间的中介。例如,当执行操作时,NavSaveUC可以使用其事件参数中的数据引发事件。该页面可以处理来自NavSaveUC的事件。如果DataEntryUC将文本框或文本框的文本属性公开为公共属性,则页面的事件处理程序可以从NavSaveUC的事件参数中获取数据并将其放在DataEntryUC的文本框中。