【发布时间】:2016-11-13 14:18:08
【问题描述】:
简单的 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"
我哪里错了?
更新: 我发现了问题(感谢下面的 cmets),我的问题是我的控件位于 Content 控件中。现在想了解如何在内容控件中引用标签。比如:
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" />
【问题讨论】:
-
尝试进行递归查找并吐出找到它的父级,看看是否能有所启发?此外,如果这些是动态创建的,它们将不会在回发中可用,以防这是问题的未说明部分。
-
你能发布你的页面吗?
-
在为 Zaggler 制作示例页面时,我发现了我认为是我的问题。标签控件实际上是在一个内容控件中:
在内容控件中查找控件的正确方法是什么?跨度> -
查看我的其他评论...我想会是这样。