Asp.net 从母版页访问控制面板保持架

Asp.net 从母版页访问控制面板保持架,asp.net,master-pages,webforms,Asp.net,Master Pages,Webforms,你好,我已经被这种情况困扰了很长时间了?这里需要帮助吗 我已经为WebApp和其他引用默认母版页的自定义母版页定义了嵌套母版页1默认值 以下是使用我的自定义母版页的content页面say content.aspx的代码snipet 在aspx源代码中,我包括: %@ MasterType VirtualPath="~/NestedMasterPage1.master" %> 在代码隐藏文件ie.custom.aspx.cs中,问题在于: ContentPlaceHolder mas

你好,我已经被这种情况困扰了很长时间了?这里需要帮助吗

我已经为WebApp和其他引用默认母版页的自定义母版页定义了嵌套母版页1默认值

以下是使用我的自定义母版页的content页面say content.aspx的代码snipet

在aspx源代码中,我包括:

%@ MasterType   VirtualPath="~/NestedMasterPage1.master" %>
在代码隐藏文件ie.custom.aspx.cs中,问题在于:

ContentPlaceHolder masterContentPlaceHolder = (ContentPlaceHolder)Page.Master.Master.FindControl("MainContent"); //works well
ContentPlaceHolder nestedContentPlaceHolderHeading = (ContentPlaceHolder)masterContentPlaceHolder.FindControl("NestedMasterHeading"); //works well
Label NewsHeadLines = (Label)nestedContentPlaceHolderHeading.FindControl("lblSubSectionHeader"); //returns null?? The Control ID is all checked and is the same in the Nested Master Page.
**NewsHeadLines.Text = "Testing";** //System.NullReferenceException: 
对象引用未设置为对象的实例


这是因为我将控件嵌套在HTML表、行和列中的标签中吗?请告知?我已经仔细检查了控件名称或ID。

我相信您可能缺少一个或两个嵌套容器。试试这个;不要试图找出嵌套的容器,而是尝试使用通用的编程逻辑来获取它们。看看Rick Strahl的

吧,不要使用FindControl,你应该在母版页中提供公共属性,以便访问相应控件的属性f.e。文本在这种情况下,您可以实现一个属性NewsHeaders。母版页中始终有对其控件的直接引用。因此,在访问这些属性之前,您只需将主控形状转换为正确的类型。好主意,蒂姆。但我还是错过了那一行。在我的内容页的源代码中创建控件会使嵌套母版页中的控件变为null。因此,我所要做的就是注释掉自动生成的源代码Snipet。谢谢你的回复,谢谢你的博客链接。我一直在关注包括Rick Strahl在内的作者的高质量博客。