ASP.NET' te basit template mantığı

27-3-2005

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 Sub

End 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.

Recent Blog Posts

See all of the blog posts