Содержимое в вашем ContentPlaceHolder будет заменено содержимым, предоставленным страницей содержимого.
Таким образом, когда ваша страница контента имеет элемент управления контентом, предназначенный для заполнителя SideBarContent, ваша новостная сетка будет заменена.
Имея это в виду, видите ли вы эту проблему на всех страницах или только на страницахчто заменить контент?Я ожидаю, что это будет нулевым для любой страницы, где вы заменяете контент на странице контента.
update
Я только что быстро попробовал это.
Со страницей, которая не определяет элемент управления asp:Content
, нацеленный на asp:ContentPlaceHolder
элементы управления внутри этого asp:ContentPlaceHolder
, будут доступны вам в коде позади.
На странице, где он ДЕЙСТВИТЕЛЬНО определяет asp:Content
, нацеленный на этот asp:ContentPlaceHolder
, затем элементы управления внутри asp:ConentPlaceHolder
удаляются и, следовательно, обнуляются при доступе в коде позади.
Таким образом, этот контент в заполнителе на главной странице будет заменен, когда страница контента предоставляет контент, и поэтому ваша главная страница должна быть закодирована, чтобы ожидать такой ситуации.
Итак, если у вас это есть в Site.master:
<asp:ContentPlaceHolder ID="OtherContent" runat="server">
<asp:Button ID="foo" runat="server" />
</asp:ContentPlaceHolder>
... тогда в Page1.aspx у вас есть это ...
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="OtherContent">
</asp:Content>
... тогда кнопка "foo" будет нулевой для этой страницы.Если вы не указали этот элемент управления содержимым Page2.aspx, кнопка foo будет создана и доступна в коде вашей главной страницы.
protected void Page_Load(object sender, EventArgs e)
{
// this will be null for pages that
// remove the default content of "OtherContent"
var foo = this.foo;
}
Итак, я подозреваю, что вам просто нужно принять меры, чтобы эта сетка была нулевой иесли это так, вы можете предположить, что на содержательной странице есть собственный список новостей.