anti-keseronokan (old)
Fun Stuff for Anti-Fun People
This blog has moved to http://ikhwanhayat.net
Friday, December 17, 2004
Petualangan .NET: How To Use Inheritence In ASP.NET?
Satu konsep yg paling aku gemari dalam OOP ialah "Inheritance". Inheritance dapat mengurangkan line of codes dan menggalakkan reusablity. Masalahnya dalam aku tak pasti mcm mana nak implement benda ni dalam app ASP.NET dan Visual Studio .NET .. Cara yg aku pakai sekarang macam ni, ada satu base class (class shj, takde aspx), kita namakan MyFormBase.vb, yg inherit System.Web.UI.Page. Dan kemudian satu lagi class (namakan MyForm.vb) yg inherit MyFormBase tadi, dan satu aspx (namakan MyForm.aspx) yg inherit class MyForm..
-- In MyFormBase.vb
Public Class MyFormBase
Inherits System.Web.UI.Page
Protected WithEvents btnButton As Button
Protected WithEvents lblTitle As Label
Protected WithEvents lblLabel As Label
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not (IsPostBack) Then
lblTitle.Text = " to enter the inherited world..."
End If
End Sub
Private Sub btnButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnButton.Click
lblLabel.Text = "Hello To Inherited World! ( <-- this event handled by base class) "
End Sub
End Class
-- In MyForm.vb
Public Class MyForm
Inherits MyFormBase
Protected WithEvents pnlCode As Panel
Protected WithEvents lblLabel2 As Label
Private Sub btnButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnButton.Click
lblLabel2.Text = "(this event handled by derived class --> )"
pnlCode.Visible = True
End Sub
End Class
-- In MyForm.aspx
<%@ Page Language="vb" AutoEventWireup="false" Inherits="MyWebForm.MyForm"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>MyForm</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label id="lblTitle" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 16px" runat="server">Title</asp:Label>
<asp:Label id="lblLabel" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 56px" runat="server"
BackColor="#FFC080" Font-Bold="True"></asp:Label>
<asp:Button id="btnButton" style="Z-INDEX: 103; LEFT: 16px; POSITION: absolute; TOP: 16px" runat="server"
Text="Click Here"></asp:Button>
<asp:Panel id="pnlCode" style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 8.5pt; Z-INDEX: 104; LEFT: 16px;
PADDING-BOTTOM: 5px; PADDING-TOP: 5px; FONT-FAMILY: courier new; POSITION: absolute; TOP: 112px"
runat="server" Width="824px" Height="440px" BackColor="WhiteSmoke" BorderStyle="Dashed"
BorderWidth="1px" Visible="False">
/** long code here **/
</asp:Panel>
<asp:Label id="lblLabel2" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 88px" runat="server"></asp:Label>
</form>
</body>
Tapi agak sukar nak buat mcm ni sbb dlm Visual Studio .NET bila kita add a new WebForm (*.aspx), dia akan auto create class (*.aspx.vb) yg automatik akan jadi base class bagi aspx tadi. Menggunakan cara aku kat atas, aku memecahkan pertalian ni, aku buat rangkaian inheritance sendiri. (MSDN: Wb Forms Code Model). Jadi susah la sikit, file *.aspx.vb kena delete. Kenapa aku tanak pakai file ni, sebab bila guna code-behind model ni, control yg ada dalam aspx akan automatik di declare dalam code-behindnya. Sedangkan aku tanak macam ni, aku nak control tu dideclare kat base class supaya boleh aku letakkan routine2 yg dikongsi di dlm base class.
Aku rasa cara aku ni ada tak betul sikit, tapi takde sapa nak tunjukkan cara yg betul ni. Kena banyak baca dan study code org lain ni. Ermmm, penatnya..

2 Comments:
aku wpon penah gune ni tp aku ingat tak ingat penah tak gune inheritance..hish...dah lupe laa..aku ade ingat skit je pon ttg class...create class laa...but dah lupe cara penggunaannye...emm..menarik nk blaja ni..tp aku takde mase laa...sibuk design screen jek..dah nk meletup...ko try bukak kat codeproject.com.byk gak coding yang best...dah terer nnti bule ajor aku...he:P
dah terer nanti? aku dah terer dah pun skarang ni.. muahahaha (belagak siyal!)
hihihi.. part2 simple2 senang nak guna.. setakat yg ada ni ok la, takde masalah.. bila part masuk advance2 mcm caching, customizable theme (skinning), yg tuh pening2 tuh.. nak belajar pattern yg org guna utk .NET, baru boleh buat kerja cara pro..
Enterprise Solution Patterns Using Microsoft .NETp.s: entry ni sebenarnya bukan tutorial etc, tapi sebenarnya adalah *pertanyaan*.. aku dlm kebingungan nih..
Post a Comment
<< Home