我在网页上有一个简单的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子句,但行为没有变化。
答案 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和代码隐藏并保存了它们,从项目中删除了页面并使用我保存的代码重新创建了它。重建,重新测试,瞧!它现在有效。