3

我在 asp.net 中有一个使用母版页的网站。在这个母版页中,我有一个多视图控件,其中一个视图包含内容页的所有内容,另一个视图包含母版页的一些本地内容,在该母版页中显示来自所有内容页的错误消息。

在这个错误视图中,我有一个显示错误消息的 asp.net Label 控件。通常标签工作正常,但在少数情况下标签为空,这会呈现 NullReferenceException。现在我通过在使用标签之前检查标签是否为空来处理这种情况,但我的问题仍然是:

为什么这个标签是空的?什么情况下会产生这种情况?

编辑:在母版页中,我有一个名为 SetErrorText 的方法,它接受一个字符串并设置标签。我从内容页面的 Page_Load 方法中调用此方法,这通常可以正常工作。除了两种情况(到目前为止我已经发现),标签都被初始化了,没有什么可以将这两种情况与所有有效的情况分开。

此外,母版页中的所有其他控件都已初始化,例如包含标签的视图控件。

当内容页面的 Page_Load 滚动时,应该填充母版页。

4

4 回答 4

4

问题似乎是马虎之一。有人忘记删除 Visual Studio 在母版页具有 ContentPlaceHolder 控件的所有内容页面上自动生成的内容控件。

如果内容页面有一个 Content-control,那么放置在母版页上 ContentPlaceHolder-control 中的所有控件似乎都将为空。

于 2008-09-05T07:15:19.057 回答
1

您从母版页上的什么方法访问标签?根据页面生命周期的阶段,标签控件可能尚未加载

于 2008-09-05T06:41:07.890 回答
0

您可以在创建之前访问它吗?检查页面生命周期:http: //msdn.microsoft.com/en-us/library/ms178472.aspx

于 2008-09-05T06:47:20.840 回答
0

我有一个非常相似的错误。在我的情况下,它是由与控件设计器文件相关的 .NET 编译器怪异引起的。即使设计器文件具有正确定义的控件,也将其删除、重新生成并重新构建(确保重新构建,而不仅仅是“构建”)。请参阅此处的最佳答案,了解如何重新生成设计器文件:

你如何强制 Visual Studio 为 aspx/ascx 文件重新生成 .designer 文件?

于 2015-09-03T05:12:51.610 回答