简单的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" />
答案 0 :(得分:1)
经过几个小时和几十次试错,这就是我要找的东西:
Dim lblMenuItemName As Label = TryCast(Master.FindControl("ContentBody").FindControl("lblMenuItemName1"), Label)