Asp.net Asp标签控件在代码隐藏中为空

Asp.net Asp标签控件在代码隐藏中为空,asp.net,null,controls,Asp.net,Null,Controls,我在网页上有一个简单的asp:Label控件。在Page_Load事件中,我有条件地用警告填充标签。很简单,对吧?这过去是有效的,但现在我得到一个错误,说控件为空 控制声明: <table width="100%"> <tr> <td align="right"> <asp:Label ID="lblWarningLabel" runat="server" Enabled="False"></a

我在网页上有一个简单的asp:Label控件。在Page_Load事件中,我有条件地用警告填充标签。很简单,对吧?这过去是有效的,但现在我得到一个错误,说控件为空

控制声明:

<table width="100%">
    <tr>
        <td align="right">
            <asp:Label ID="lblWarningLabel" runat="server" Enabled="False"></asp:Label>
        </td>
    </tr>
</table>
我对此进行了研究,发现一些海报说他们的用户控件为空,或者他们试图动态创建控件,这两者都不适用。我没有使用Resharper,但自从上次看这个程序以来,我已经通过NuGet安装了一些生产力工具

谢谢你的帮助

更新: 我应该补充一点,同一页上的另一个asp:Label控件正在按预期工作。
我还将“False”改为“False”,然后一起删除了Enabled子句,但行为没有改变

您的控制现在是否在中继器中,而以前不是?如果是这种情况,有一种不同的访问方式:

也许能让你开始

实际上可能比这更简单,但是,有时使用代码前端和代码后端创建的设计器文件会不同步。您可以尝试删除设计器文件,右键单击aspx,然后“转换为web应用程序”以重新生成设计器文件。此外,清理/重建、关闭和重新打开VS有时会纠正问题-如果我认为是这样的话


这里有更多关于这个问题的信息,在您的解决方案中,该页面应该有一个.designer.cs文件。因此,如果页面是Login.aspx,那么应该有Login.cs和Login.designer.cs。检查设计器并查看是否列出了该控件,如果没有,请尝试将其从.aspx页面中删除并重新添加。

我找到了一个解决方案,尽管我并不认为它是最好的:


我复制了页面的HTML和代码并保存了它们,从项目中删除了页面,然后使用我保存的代码重新创建了页面。重新建造,重新测试,瞧!现在可以使用了。

感谢您的回复。不,它从不在中继器中。我尝试关闭VS并重新打开,但问题仍然存在。我会尝试你的其他建议,并让你知道我是否有任何成功。谢谢回应。是的,我的标签在那里,它的声明看起来与该页面上另一个标签的声明相同:protectedglobal::System.Web.UI.WebControls.Label lblWarningLabel;受保护的全局::System.Web.UI.WebControls.Label lblTitle;
if (sServerName.Contains("Staging") || sServerName.Contains("Test"))
            {
                Int32 iIndex = sServerName.IndexOf("/");
                lblWarningLabel.Text = "Warning: You are working on the " + sServerName.Substring(iIndex + 1) + " server!";
                lblWarningLabel.CssClass = "WarningLabel";
                lblWarningLabel.Enabled = true;
            }