【问题标题】:Why is my web control null?为什么我的 Web 控件为空?
【发布时间】:2008-09-05 06:36:03
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: asp.net master-pages


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2015-04-04
            • 1970-01-01
            • 1970-01-01
            • 2011-08-16
            • 2016-09-04
            • 2018-06-26
            • 2010-11-25
            • 2018-04-07
            • 2015-02-22
            相关资源
            最近更新 更多