需要有关错误的帮助 - 当前上下文中不存在名称“lnk1”

时间:2010-10-14 07:30:15

标签: c# asp.net

这是我的链接按钮: -

<asp:LinkButton ID="lnk1" Text="Set as Default" runat="server" Visible="false" OnClick="lnk1_OnClick"></asp:LinkButton>

在Code Behind中我只是让它可见

lnk1.Visible = true;

我已经检查了n上的ID over..whats错了? Intellisense也不会检测到它。我正在做一些非常愚蠢的事情。只是想知道它是什么..帮助!

我甚至重新启动了Visual Studio ..但同样的错误

3 个答案:

答案 0 :(得分:5)

另一个控制模板的控制部分是什么?例如。转发器ItemTemplate等的一部分?

<强>更新

由于OP已经说它是转发器ItemTemplate的一部分,只是想我会解释该怎么做(即使OP已经对它进行了排序)

您需要根据情况调用Repeater或Controls.OfType()上的FindControl来获取控件。

ASP:

    <asp:Repeater runat="server" ID="rptrTest">
        <ItemTemplate>
            <asp:TextBox runat="server" ID="txtBxName" />
            <asp:CheckBox runat="server" ID="chkBx1" />
            <asp:CheckBox runat="server" ID="chkBx2" />
        </ItemTemplate>
    </asp:Repeater>

C#

        IEnumerable<CheckBox> chkBoxes = rptrTest.Controls.OfType<CheckBox>();
        TextBox txtBxName = (TextBox)rptrTest.FindControl("txtBxName");

我经常为常用的控件做些什么(不管是不是一个好主意,我确定有人会让我知道),创建一个执行此代码的成员。

    private TextBox _txtBxName;
    public TextBox txtBxName {
        get {
            if (_txtBxName == null) {
                _txtBxName = (TextBox)rptrTest.FindControl("txtBxName");
            }
            return _txtBxName;
        }
    }

答案 1 :(得分:2)

有时,设计器类不会正确重新生成。你可以尝试的事情:

  • 选择行,剪切,保存,重建, 粘贴,保存
  • 删除设计器 .cs文件,右键单击aspx, 转换为Web应用程序 - &gt;这个 将从中生成设计器类 刮

答案 2 :(得分:0)

因为我没有权利来评论;所以......

  • 您在哪个场合看到该项目?尝试在PageLoad中执行此操作。
  • 你能展示你的标记吗?

或者,您可以尝试Find控件。