如何访问用户控件中的主页控件值

时间:2013-07-20 05:57:06

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

我在dot net aspx页面中有这么多控件,我想访问用户控件页面中的一些控件值。不使用任何属性(变量)任何可用的选项..?

Default.aspx的:


 <input type="hidden" name="Hidden1" value="1" />
 <input type="hidden" name="Hidden2" value="2" />
 <input type="hidden" name="Hidden3" value="3" />

UserControl1.ascx:


Response.write("Hidden 1 Value" & Request("Hidden1"))
Response.write("Hidden 2 Value" & Request("Hidden2"))
Response.write("Hidden 3 Value" & Request("Hidden3"))

2 个答案:

答案 0 :(得分:1)

例如,要检索aspx页面中包含的ascx控件中定义的文本框,您可以尝试:

Dim myTextBox As TextBox = Ctype(Me.Parent.FindControl("myTextBoxName"), TextBox)

请注意,要检索的控件必须具有runat="server"属性,否则无法在服务器端看到它。

在您的问题中,您发布了三个没有runat="server"的控件;你可以改用:

<asp:HiddenField ID="HiddenField1" runat="server" Value="1" />
<asp:HiddenField ID="HiddenField2" runat="server" Value="2" />
<asp:HiddenField ID="HiddenField3" runat="server" Value="3" />

在这种情况下,上述命令将变为:

Dim myHiddenField As HiddenField = Ctype(Me.Parent.FindControl("myHiddenFieldName"), HiddenField)

答案 1 :(得分:1)

首先,为了在代码后面找到一个控件,它必须是服务器端控件,你可以从用户控件获取aspx页面控件的值,如下所示

后面的用户控制代码中使用此代码
           var tb = (TextBox)this.Parent.FindControl("myTextBox");
           string s = tb.Text;//you'll get the value of TextBox in s

这里&#34; myTextBox&#34;是我的aspx页面中TextBox的id。

注意:我将myTextBox和User Control放在我的aspx页面的同一个容器中。