ASP.NET' OO mantığı bize bazı deli avantajlar sağlıyor bunlardan biri de class' ları override edip ASP.NET çalışması sürecinde istediğimiz noktaya müdahale edebilmek.
Örnek olark klasik bir sitede header/footer kısımlarınızı sabittir (eskiden include kullanırdık) bu tip bir durumda hiç include veya ara fonksiyonlar kullanmadan direk Web.UI.Page class' ında Render() metodunu (control' den inherit) override ederek (overload değil karışmasın) o noktada header ve footer ımızı her sayfada bastırtabiliriz.
Unutmamız gereken iki tane şey var birincisi Render() in üzerine yazdığımızda fonksiyonalite bozulmasın diye orjinal renderi çağırmak ve oluşturduğumuz yeni bir web form' u System.Web.UI.Page yerine kendi class' ımızdan inherit etmemiz. Bu noktada kendi class' ımızda Page' den inherit olduğundan diğer fonksiyonalitelerde hiç bir sorun çıkmayacaktır.
Kodu anlayabilmeniz için OOP mantığı dahilinde override ve inheritlerden haberdar olmalısınız;
'Class Kodu
Public Class TemplatePage
Inherits System.Web.UI.Page
Private Const Header As String = "<html>...."
Private Const Footer As String = "...</html>"Protected Overrides Sub Render(ByVal writer As ystem.Web.UI.HtmlTextWriter)
writer.Write(Header)
MyBase.Render(writer)
writer.Write(Footer)
End SubEnd Class
'Default.aspx
Public Class _default
Inherits TemplatePage
....
End Class
Kod vb sintaksında, C# ve konu farklı ve daha geniş bilgiler CodeProject' te var.
Unutmadan VS 2005' te master pages ile benzer ve daha iyi bir çözüm oluşturabilirsiniz.
