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

Ser*_*ity 0 c# asp.net

这是我的链接按钮: -

<asp:LinkButton ID="lnk1" Text="Set as Default" runat="server" Visible="false" OnClick="lnk1_OnClick"></asp:LinkButton>
Run Code Online (Sandbox Code Playgroud)

在Code Behind中,我只是让它可见

lnk1.Visible = true;
Run Code Online (Sandbox Code Playgroud)

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

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

Psy*_*nic 5

contol是另一个控件模板的一部分吗?EG部分中继器ItemTemplate等?

更新:

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

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

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>
Run Code Online (Sandbox Code Playgroud)

C#

        IEnumerable<CheckBox> chkBoxes = rptrTest.Controls.OfType<CheckBox>();
        TextBox txtBxName = (TextBox)rptrTest.FindControl("txtBxName");
Run Code Online (Sandbox Code Playgroud)

我经常为常用的控件做的事情(虽然这是一个好主意,但我确定有人会让我知道),创建一个执行此代码的成员.

    private TextBox _txtBxName;
    public TextBox txtBxName {
        get {
            if (_txtBxName == null) {
                _txtBxName = (TextBox)rptrTest.FindControl("txtBxName");
            }
            return _txtBxName;
        }
    }
Run Code Online (Sandbox Code Playgroud)