16 Ocak 2014 Perşembe

Cannot find ContentPlaceHolder 'ContentPlaceHolder2' in the master page '', verify content control's ContentPlaceHolderID attribute in the content page. hatası ve çözümü


Cannot find ContentPlaceHolder 'ContentPlaceHolder2' in the master page '/Admin/Index.Master', verify content control's ContentPlaceHolderID attribute in the content page. Hatası ve çözümü
Yazdığım bir projenin yönetim panelinin kullanilacar.aspx sayfasında  ikinci bir ContentePlaceHolder a ihtiyacım vardı master page den referans alıp yeni sayfamı ekledim.  

İkinci ContentPlaceHolder kontrolüne ihtiyacım olduğu Kullanicilar.Aspx sayfasında "CP_Kullanicilar"  adında bir CP ekledim. fakat atladığım bir nokta vardı. Master Page sayfamda da bu CP yi tanımlamam gerekiyordu.

 <asp:Content ID="Content2" ContentPlaceHolderID="CP_kullanicilar" runat="server"> 
<%-- Geriye Kalan Tüm html kontroller burada  --%>
</asp:Content>

Admin.Master sayfamın .cs kodlarının içersinde 

   <asp:contentplaceholder id="CP_kullanicilar" runat="server">
  </asp:contentplaceholder>


eklediğimde bu hatadan kurtuldum.


ContentePlaceHolderNedir ?
Sitelerin gövde kısmları hariç diğer tüm alanlar ( menü,logo,banner ...) hepsi statictir. Ve değişmezler. Tek bir yerden kontrol edilir. Tüm diğer sayfalarda bu MasterPage de yaılan değişiklikler uygulanır. Bu işlem MasterPage adını almaktadır. Ve web programcılarının işini çok çok kolaştırmaktadır.

MasterPage’den türeyen bir kontroldür sadece ContentPlaceHolder yapısı içerisini kullanabilir. Diğer hiç bir alana Mesajlar.Aspx , hakkimda.aspx gibi sayfalardan ulaşılamaz. Ulaşabileceğimiz alanlar ContentePlaceHolder kontrolünün içidir.