VB.net Findcontrol不工作

时间:2016-11-13 14:18:09

标签: asp.net vb.net

简单的FindControl不起作用 - 踢回来:

System.NullReferenceException:未将对象引用设置为对象的实例。

我在网页上有一个asp.net标签。

<asp:Label ID="lblMenuItemName1" runat="server" Text="Label"></asp:Label>

标签控件不在任何其他控件(数据网格,转发器等)内。单击按钮调用代码。

Dim lblMenuItemName as Label
lblMenuItemName = CType(Page.FindControl("lblMenuItemName1"), Label)
lblMenuItemName.Text = "Hello"

我也尝试过(以及大约六种情景):

lblMenuItemName = FindControl("lblMenuItemName1")
lblMenuItemName = Me.FindControl("lblMenuItemName1")

我这样做,而不是直接引用控件,因为我已经有十个这样的标签,我将通过循环使用

分配文本
FindControll("lblMenuItemName" & x.ToString)

仅供参考 - 直接参考控件可以正常工作。

 lblMenuItemName1.text = "Hello"

我哪里错了?

更新: 我发现问题(感谢下面的评论)我的问题是我的控件是在内容控件中。现在寻找如何在内容控件中引用标签。类似的东西:

 Dim x As Content = Me.FindControl("Content3")
 Dim lblMenuItemName As Label = x.FindControl("lblMenuItemName1")
 lblMenuItemName.Text = "hello"


<asp:Content ID="Content3" ContentPlaceHolderID="ContentBody" Runat="Server">
<asp:Label ID="lblMenuItemName1" runat="server" Text="Label"></asp:Label><br /><br />
<asp:Button ID="Button1" runat="server" Text="Button" />

1 个答案:

答案 0 :(得分:1)

经过几个小时和几十次试错,这就是我要找的东西:

    Dim lblMenuItemName As Label = TryCast(Master.FindControl("ContentBody").FindControl("lblMenuItemName1"), Label)