我在asp.net中有一个使用母版页的网站。在这个母版页中,我有一个多视图控件,其中一个视图包含内容页面的所有内容,另一个视图具有一些本地内容到主页面,我在其中显示来自所有内容页面的错误消息。
在这个错误视图中,我有一个显示错误消息的asp.net Label控件。通常标签工作正常,但在少数情况下标签为null,这会产生NullReferenceException。现在我通过在使用之前检查标签是否为空来处理这种情况,但我的问题仍然是:
为什么这个标签为空?有什么情况可以产生这个?
编辑:在母版页中,我有一个名为SetErrorText的方法,它接受一个字符串并设置标签。我从内容页面的Page_Load方法调用此方法,这通常可以正常工作。除了两个案例(我到目前为止已经发现)之外,标签都已初始化,并且没有任何内容将这两个案例与所有有效案例分开。
此外,母版页中的所有其他控件都已初始化,例如包含标签的视图控件。
当内容页面的Page_Load四处滚动时,应填充母版页。
答案 0 :(得分:4)
似乎问题是一个邋。的问题。有人忘记删除Visual Studio在主页面具有ContentPlaceHolder控件的所有内容页面上引发的自动生成的内容控件。
如果内容页面具有内容控件,那么放置在母版页上的ContentPlaceHolder控件中的所有控件都将为null。
答案 1 :(得分:1)
您从主页上访问标签的方法是什么?根据页面生命周期的阶段,标签控件可能尚未加载
答案 2 :(得分:0)
您可以在创建之前访问它吗?检查页面生命周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx
答案 3 :(得分:0)
我有一个非常相似的错误。在我的情况下,它是由与控制设计器文件相关的.NET编译器wierdness引起的。即使设计器文件正确定义了控件,也要删除它,重新生成并重建(确保重建,不要只是'构建')。请参阅此处的最佳答案,了解如何重新生成设计器文件:
How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?