Saturday, May 24, 2008

ASP.Net Code-behind page Model(အခန္း၁ ၏အဆက္)

2. Code-behind page Model

- .aspx( VE ေတြပါေသာ) တစ္ဖိုင္ ႏွင္႕

- .cs( PC ေတြပါေသာ) တစ္ဖိုင္ ဆုိျပီး ႏွစ္ဖိုင္ခြဲေရးပါတယ္။

Single-file page Model ႏွင္႕ ကြာျခားခ်က္မွာ runat="server" ပါေသာ script block ကိုထည္႕သြင္း မေရးသားရေတာ႕ပါ။ သုိ႕ေသာ္ @page directive တြင္ .aspx page ႏွင္႕  သူ၏ကုဒ္တို႕ ခ်ိတ္ဆက္ရမည္႕အတြက္ ကိုးကားေသာ attributes ႏွစ္ခုထပ္ထည္႕ရပါမည္။ တစ္ခုမွာ CodeFile="external file" ျဖစ္၍ ေနာက္တစ္ခုမွာ Inherits="class" ျဖစ္သည္။

 

ေအာက္ပါနမူနာ page ကိုစမ္းၾကည္႕ရန္အတြက္ ဖြင္႕ထားေသာ Visual Studio 2005 တြင္ ပထမဦးစြာ view>solution explorer ကိုေခၚထားပါ။ ထုိ႕ေနာက္ မိမိ create လုပ္ထားေသာ root folder တြင္ right click ႏွိပ္၍ Add New Item ကို click ထပ္လုပ္ပါ။ Add New Item dialog box အတြင္းမွ Web Form ကို ေရြး၍ ေအာက္ပါ ဖိုင္နာမည္ ေျပာင္းျပီး Add လုပ္ပါ။

ရရွိလာေသာ page တြင္ ေအာက္ပါ ကုဒ္မ်ားကို ရိုက္သြင္းပါ။ (အရင္ရက္က နမူနာ page ျပဳလုပ္သည္႕အတိုင္း)

 

SamplePage.aspx(ဖုိင္နာမည္ ေပးရန္)

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SamplePage.aspx.cs" Inherits="SamplePage" %>

 

<html>

<head runat="server">

    <title>Code-behind Page Model</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:Label ID="Label1" runat="server" Text="Label">

        </asp:Label>

        <br/>

        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

    </div>

    </form>

</body>

</html>

 

 

.cs file ကို ဆက္လက္ရိုက္ရန္အတြက္ solution explorer ထဲရွိ SamplePage.aspx file ေဘးမွ + သေကၤတေလးကို ႏွိပ္၍ဖြင္႕လွ်င္ SamplePage.aspx.cs file ကိုေတြ႕ျပီး ႏွစ္ခ်က္ click ႏွိပ္ျပီး ေအာက္ပါ program code မ်ားကို ရိုက္ပါ။

 

SamplePage.aspx.cs(ဖုိင္နာမည္ ေပးရန္)

 

using System;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

public partial class SamplePage : System.Web.UI.Page

{

    protected void Button1_Click(object sender, EventArgs e)

    {

        Label1.Text = "Clicked at" + DateTime.Now.ToString();

    }

}

 

Browser တြင္ ၾကည္႕ရန္ page တြင္ right click ႏွိပ္၍ View in Browser ကိုေရြးျပီး run ၾကည္႕ပါ။ IE browser တက္လာလွ်င္ Label ဟူသည္႕ စာသားႏွင္႕  button တခုေတြ႕ပါမည္။ button ကိုႏွိပ္ၾကည္႕လွ်င္ တၾကိမ္ႏွိပ္တိုင္း clicked at ဟူသည္႕ စာသားအေသႏွင္႕ updated Date time ကိုေတြ႕ႏို္င္ပါသည္။ (Dynamically produce လုပ္ေနျခင္းမွာ သိသာထင္ရွားပါသည္)

 

Coding ရွင္းလင္းခ်က္

1. <% @ Page..... CodeFile="SamplePage.aspx.cs" external file ျဖစ္၍ ေနာက္တစ္ခုမွာ Inherits="SamplePage"  သည္ class file ျဖစ္ပါသည္။(အေပၚတြင္  ႏႈိင္းယွဥ္ရွင္းလင္းခဲ႕သည္႕အတိုင္း)

2. external file ကို နာမည္ေပးရာတြင္ ၾကိဳက္တာေပးလို႕ ရေသာ္လည္း .Net convention အရ အေပၚက .aspx file ၏ နာမည္ကိုယူျပီး .cs ဟူ၍ ေပးေလ႕ ရွိပါသည္။

3. public partial class SamplePage:System.Web.UI.Page ဟူသည္႕ ကုဒ္တြင္ SamplePage သည္ class ျဖစ္၍ နာမည္ေပးရာတြင္ ၾကိဳက္သည္႕နာမည္ ေပး၍ ရပါသည္။ သို႕ေသာ္ System.Web.UI.Page မွ inherit လုပ္ကိုလုပ္ရပါမည္။

အထက္ပါ သံုးခ်က္သည္မျဖစ္မေန ေရးသားရမည္႕ ကုဒ္မ်ားျဖစ္သည္။

Button1_Click ဟူသည္႕  Event Handler method ေလးကိုမူ script block တြင္ ေရးမည္႕အစား .cs file တြင္ လာေရးသားထားျခင္းျဖစ္ပါသည္။ ဒီနမူနာ .cs page မွာေတြ႕တဲ႕  partial class sample page ဆိုတာ ထည္႕ တာနဲ႕ ပါတ္သက္ျပီး ေျပာျပခ်င္တာက ASP.Net 2.0 သည္ code-behind ဖိုင္တြင္ partial classes ေခၚတဲ႕ language feature အသစ္ပါတာမို႕လို႕  .aspx file မွာ ပါတဲ႕ class type ေတြကို .cs file မွာ ထပ္ျပီး declare လုပ္စရာမလိုပဲ dynamically compile လုပ္ေပးသြားပါတယ္။

 

ယမန္ေန႕ကေရးသားခဲ႕ေသာ single-file page model(in-line programming ဟူ၍လည္း ေခၚပါသည္) ႏွင္႕  ယခု code-behind page model တုိ႕တြင္

ဘယ္ပံုစံနဲ႕ေရးေရး ေနာက္ဆံုးရတဲ႕ result သည္ အတူတူျဖစ္သည္ ကိုေတြ႕ရွိရပါမည္။ ဒါဆို အပိုၾကီးပဲလို႕ေတာ႕ မေတြးပါနဲ႕ဦး။ Code-behind model ရဲ႕ အားသာခ်က္က VE နဲ႕ PC က သပ္သပ္ခြဲေရးတာျဖစ္လို႕  design ပိုင္းပဲ ကြက္ျပင္ခ်င္ရင္ အလြယ္တကူျပင္လို႕ရမွာ ျဖစ္ပါတယ္။ ကိုယ္ပဲ design ေရး ကိုယ္ပဲ coding ကိုင္တာဆိုရင္ေတာ႕ ၾကိဳက္တာသာ သံုးေပါ႕ေနာ္။ ဒါေပသိ ASP ကေန ASP.Net ကိုေျပာင္းဖုိ႕ဆိုရင္ေတာ႕  single-file page model သံုးတာက logical model ျဖစ္ပါတယ္။ ASP.Net new application ကို create လုပ္တာဆိုရင္ေတာ႕  server-side code(in .cs file) နဲ႕  client-side code (in .aspx file) သပ္သပ္စီခြဲေရးလို႕ ရတဲ႕  code-behind model ကိုသံုးဖို႕ recommend လုပ္ပါတယ္။

 

က်မ နားလည္ထားတာေတြ ျပန္ေရးတာျဖစ္လို႕ အမွားပါရင္ ေထာက္ျပေပးေစလိုပါတယ္။ programming ကို စိတ္၀င္စားသူေတြအတြက္ တစ္စိတ္တစ္ပိုင္းေလးပဲျဖစ္ျဖစ္ အေထာက္အကူျဖစ္ဖုိ႕ ေမွ်ာ္လင္႕မိပါတယ္။

ဆက္ေရးမွာေလးေတြလဲ ထပ္ျပီးအားေပးၾကပါဦးစို႕ေနာ္။

1 comment:

waiyan said...

good post. carry on! :)