代码隐藏中的Asp Label控件为空

时间:2015-04-09 16:17:41

标签: asp.net null controls

我在网页上有一个简单的asp:Label控件。在Page_Load事件中,我有条件地使用警告填充标签。简单吧?这曾经工作,但现在我得到一个错误,说控件为空。

控制声明:

<table width="100%">
    <tr>
        <td align="right">
            <asp:Label ID="lblWarningLabel" runat="server" Enabled="False"></asp:Label>
        </td>
    </tr>
</table>

找到lblWarningLabel为null的代码隐藏:

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;
            }

我研究了这个,我发现一些海报说他们的用户控件是null或他们试图动态创建控件,这两者都不属于这里。我没有使用Resharper,但自从我上次看这个程序以来,我已经通过NuGet安装了一些Productivity Tools。

感谢您的帮助。

更新: 我应该添加另一个asp:同一页面上的Label控件按预期工作。 我也改变了#F;&#34; False&#34;到&#34;假&#34;然后一起删除了Enabled子句,但行为没有变化。

3 个答案:

答案 0 :(得分:0)

现在你的控制器是否在转发器内并且之前没有?如果是这种情况,可以通过不同的方式访问它:

Cannot Find Label Control In Repeater Control

可能会让你开始。

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

以下是How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?

的更多信息

答案 1 :(得分:0)

在您的解决方案中,该页面应该有一个.designer.cs文件。因此,如果页面是Login.aspx,则应该有Login.cs和Login.designer.cs。检查设计器并查看控件是否列在那里,如果没有尝试将其从.aspx页面中删除并重新添加。

答案 2 :(得分:0)

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

我复制了网页的HTML和代码隐藏并保存了它们,从项目中删除了页面并使用我保存的代码重新创建了它。重建,重新测试,瞧!它现在有效。