母版页中的空对象引用

时间:2009-12-12 16:17:45

标签: c# asp.net

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

例如我有:

<asp:DropDownList ID="ddlSearch" runat="server" 
                 onselectedindexchanged="ddlSearch_SelectedIndexChanged" 
                AutoPostBack="True">
            </asp:DropDownList>

我可以在编写代码时访问它,因此“它看到它的属性正常”。

但是在运行时我收到了

  

对象引用未设置为对象的实例。

你知道为什么吗?

我也试图找到它:

ContentPlaceHolder mpContentPlaceHolder =
        (ContentPlaceHolder)this.FindControl("ContentHead");
    if (mpContentPlaceHolder != null)
    {
        DropDownList ddlSearch =
             (DropDownList)mpContentPlaceHolder.FindControl("ddlSearch");
        if (!Page.IsPostBack)
            utils.fillDDLSearch(ddlSearch);
    }

但它也给了null ....这真的很奇怪......

我尝试了另一个对象(一个asp图像控件,但完全相同的问题。 所有它都可以在编译时编译,但在运行时给出null但是它正确地找到了内容占位符。

有人知道这个问题吗?

错误:


对象引用未设置为对象的实例。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。


2 个答案:

答案 0 :(得分:0)

您需要做的是强力键入页面与母​​版页之间的关联。在Page ascx中将此行添加到顶部:
    &lt;%@ MasterType VirtualPath =“〜/ MasterPage.master”%&gt;
〜/ MasterPage.master是您实际母版页的引用。

然后在您的页面中,您可以使用以下方式访问任何控件,属性等:
    Master。[PropertyNameHere]减去'[]'。

有关详细信息,请参阅this

答案 1 :(得分:0)

我决定将这些组件放在用户控件中并处理其中的行为。 并将用户控件放在母版页中。

然而问题仍然不明确: - 为什么主页中的控件不能直接从masterpage.cs中加入......?