C# 母版页中的空对象引用

C# 母版页中的空对象引用,c#,asp.net,C#,Asp.net,我的母版页中有一些控件,我想从相关的c#clas中访问它们 例如,我有: <asp:DropDownList ID="ddlSearch" runat="server" onselectedindexchanged="ddlSearch_SelectedIndexChanged" AutoPostBack="True"> </asp:DropDownList> 但它也给出空值…

我的母版页中有一些控件,我想从相关的c#clas中访问它们

例如,我有:

<asp:DropDownList ID="ddlSearch" runat="server" 
                 onselectedindexchanged="ddlSearch_SelectedIndexChanged" 
                AutoPostBack="True">
            </asp:DropDownList>
但它也给出空值…这真的很奇怪

我尝试使用另一个对象(asp图像控件),但问题完全相同。 在编译时一切正常,但在运行时给出null,尽管它正确地找到了内容的占位符

有人知道这个问题吗

错误:


对象引用未设置为对象的实例。 描述:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪,以了解有关错误及其在代码中起源的详细信息。 异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例



您需要做的是强力键入页面和母版页之间的关联。在页面ascx的顶部添加以下行:

其中~/MasterPage.master是对实际母版页的引用

然后,在您的页面中,您将能够使用访问任何控件、属性等:
Master。[PropertyNameHere]减去“[]”


有关更多详细信息,请参阅。

我决定将此组件置于用户控件中,并在其中处理行为。 并将用户控件放在母版页中

然而,问题仍然不清楚:
-为什么不能直接从masterpage.cs访问母版页中的控件…?

您能发布引发空引用异常的代码吗?您好,您可能从我的帖子中漏掉了这一点:“我想从相关的c#clas访问它们…”。因此,我不在继承母版的另一个页面上,而是在母版后面的页面上:MasterPage.Master.csi如果您想访问母版代码中母版页上的dropdownlist,您应该能够直接访问它(utils.fillDDLSearch(ddlSearch);)。您不需要在页面上查找控件。为什么要在ContentPlaceHolder中搜索它?DropDownList实际上在ContentPlaceHolder中吗?正是……我同意这一点,所以我尝试先直接访问它……编译时一切正常,但在运行时没有问题……我也尝试了其他对象,从母版页开始,也是如此行为…这就是为什么我试图用内容占位符找到它。(也给出null…)
ContentPlaceHolder mpContentPlaceHolder =
        (ContentPlaceHolder)this.FindControl("ContentHead");
    if (mpContentPlaceHolder != null)
    {
        DropDownList ddlSearch =
             (DropDownList)mpContentPlaceHolder.FindControl("ddlSearch");
        if (!Page.IsPostBack)
            utils.fillDDLSearch(ddlSearch);
    }