【问题标题】:VB.net Findcontrol Not WorkingVB.net Findcontrol 不工作
【发布时间】: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 制作示例页面时,我发现了我认为是我的问题。标签控件实际上是在一个内容控件中: 在内容控件中查找控件的正确方法是什么?跨度>
  • 查看我的其他评论...我想会是这样。

标签: asp.net vb.net


【解决方案1】:

经过几个小时和几十次反复试验,这就是我想要的:

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

【讨论】:

    猜你喜欢
    • 2013-02-17
    • 2017-08-03
    • 1970-01-01
    • 2015-04-25
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多