Saturday, June 7, 2008

ASP.Net 2.0 Page Directives မ်ားႏွင္႕ Attributes မ်ား

အရင္ရက္က ေျပာခဲ႕တဲ႕ ထဲက page directives နဲ႕ပါတ္သက္ျပီး directives ဆိုတာေတြ attributes ဆိုတာေတြကိုေတာ႕  မွတ္မိမလားမသိဘူးေနာ္။

ခုေျပာျပခ်င္တာက ASP.Net pages ေတြရဲ႕ behavior ေတြကို ASP.Net Directives ေတြနဲ႕ control လုပ္ႏိုင္တယ္ဆိုတာပါ။ pages ေတြကို compile လုပ္တဲ႕အခါ compiler ကဒီ directives ေတြကို သံုးပါတယ္။ ASP.Net pages သို႕မဟုတ္ user controls ေတြမွာ သံုးႏိုင္တဲ႕ directives ေတြ 11ခုရွိပါတယ္။ သူတို႕ ရဲ႕  format က ဒီလို ပံုစံေလးနဲ႕ ရွိပါတယ္။

<%@ [Directive] [Attribute=Value] %>

 

Directives: (ရွင္းလင္းေဖၚျပခ်က္ေတြကိုေတာ႕ လက္သည္းကြင္းထဲမွာ ထည္႕ျပီးေရးသားလိုက္ပါရေစ)

  1. Assembly (page သို႕မဟုတ္ user control တုိ႕ႏွင္႕ ပါတ္သက္ဆက္စပ္ေသာ assembly တို႕ကို link ခ်ိတ္ရန္)
  2. Control(.ascx ဖိုင္လို user controls သံုးဖုိ႕ ရည္ညႊန္းတဲ႕ directive ပါ)
  3. Implements( တိက်ေသခ်ာစြာေဖၚျပထားေသာ .Net framework interface ေတြကို implement လုပ္ရန္)
  4. Import(တိက်ေသခ်ာစြာ ေဖၚျပထားေသာ namespaces ေတြကို page သို႕မဟုတ္ user control ေတြထဲသို႕ import လုပ္ရန္)
  5. Master(.master ဖိုင္လို master pages ေတြမွာေရးထားတဲ႕ attributes နဲ႕ value ေတြယူသံုးေစဖို႕ တနည္းအားျဖင္႕ ကုိယ္႕ web site တခုလံုးရဲ႕ consistent layout အေနနဲ႕ ျဖစ္ေစခ်င္တဲ႕အခါ layout, structure နဲ႕ interface elements ေတြျဖစ္တဲ႕ header, footer, copyright စာသားေတြ navigation bar လုိမ်ိဳးေတြကို ေရးထားတဲ႕ master ဖုိင္ဖန္တီးတဲ႕ အခါသံုး)
  6. MasterType( master page ထဲကပါတဲ႕ references ေတြ members ေတြကိုယူျပီး page ထဲက class name တခုခုနဲ႕ ပါတ္သက္ျပီးသံုးရန္)
  7. OutputCache(page သို႕မဟုတ္ user control ရဲ႕ output catching policies ကို control လုပ္ရန္)
  8. Page(.aspx ဖို္င္မွာ attributes နဲ႕ value ေတြ specify လုပ္ဖို႕ မျဖစ္မေနသံုးတဲ႕ အသံုးအမ်ားဆံုး directive ပါ)
  9. PreviousPageType(ဒီ directive ကို သံုးျခင္းအားျဖင္႕ page တခုကေန application မွာရွိတဲ႕  တျခား page က post back event နဲ႕ အလုပ္လုပ္လို႕ ရပါတယ္)
  10. Reference(page သို႕မဟုတ္ user control ကိ္ု လက္ရွိ page သို႕မဟုတ္ user control တခုနဲ႕ link ခ်ိတ္ေပးပါတယ္) ႏွင္႕
  11. Register(namespaces ေတြ class names ေတြကို custom server control syntax မွာ notation သေဘာမ်ိဳး alias လုပ္ေပးတာပါ) တို႕ျဖစ္ပါတယ္။

 

တကယ္အသံုးအမ်ားဆံုးကေတာ႕ Page, Master, Control နဲ႕  Register တို႕ပဲ ျဖစ္ပါတယ္။

 

Page directive မွာမွ ASP.Net page အတြက္ attributes နဲ႕ value ေတြကို ထပ္မံျပီး specify လုပ္ႏိုင္ပါတယ္။ အမ်ားၾကီးရွိတဲ႕အထဲကမွ အသံုးမ်ားတာေတြကို ေဖၚျပလိုက္ပါတယ္။

 

Attributes: (Attributes ဆိုတာ 2005/ JAVA 1.5 မွာ စသံုးတဲ႕ Annotation ကို အတုယူျပီး C#မွာက် သူ႕လို how ဆုိတဲ႕ coding ေတြကို compiler/machine က auto generated လုပ္သြားေပးဖုိ႕ ေျပာေပးတဲ႕ additional information to compiler or machine လို႕ ေျပာခ်င္ပါတယ္)

 

-AutoEventWireUp(page events ေတြကို autowired လုပ္ေစခ်င္တဲ႕အခါမွာ value ကို true ေပးတာပါ။ default ကလဲ true ပါ။ မလုပ္ေစခ်င္တဲ႕အခါ false ေပးထားလို႕ရပါတယ္)

-CodeFile(.cs လို႕ သိထားတဲ႕ code behind file နဲ႕  page ကို associate လုပ္ဖုိ႕ပါ။ code behind file အေၾကာင္းေျပာတုန္းက ရွင္းျပဖူးပါတယ္)

-Debug(Page ကို debug symbols ေလးေတြနဲ႕ compile လုပ္ေစခ်င္တဲ႕အခါမွာ true ေပးျပီးသံုးပါတယ္)

-EnableSessionState(ကုိယ္႕ application ရဲ႕ သတ္မွတ္ထားတဲ႕ session state ကို အလုပ္လုပ္ေစခ်င္တဲ႕ အခါမွာ true ေပးျပီးသံုးပါတယ္)

-EnableViewState(user က registration form လုိမ်ိဳးမွာ data ေတြျဖည္႕ျပီး back နဲ႕  to and from ျပန္သြားတဲ႕အခါ ျဖည္႕ထားတဲ႕ data ေလးေတြ က်န္ေနတာမ်ိဳး ျပန္ျမင္ၾကည္႕ရင္ အဲလို condition ရဖို႕  viewstate ကုိ maintained လုပ္ထားဖုိ႕ true ေပးပါတယ္လို႕ အလြယ္ေျပာပါရေစ။ နည္းပညာဆန္ဆန္ ေျပာမယ္ဆုိရင္ေတာ႕  ASP.Net က StateManagement ျဖစ္သြားျပီး current user's information ကို တစ္ၾကိမ္ submit မလုပ္ခင္အခ်ိန္အထိ server မွာ retain လုပ္ေပးထားတဲ႕ view state technology ကို သံုးေစခ်င္တဲ႕ အခါ ဒီ attribute ကို သံုးတာပါ။)

-ErrorPage(page မွာ unhandled exceptions ေတြတက္တဲ႕အခါ ပုိ႕စ္လုပ္ဖုိ႕ URL ကို specifies လုပ္ေပးထားတဲ႕ page ပါ)

-Language(အရင္ေျပာခဲ႕ဖူးသလို page ကို VB နဲ႕ ေရးမလား C# နဲ႕ ေရးမလားဆုိျပီး ေၾကျငာတာပါ။ စကားစပ္တုန္း application တခုတည္းမွာတင္ language ကို VB or C# သီးသန္႕ခ်ည္းေရးတာျဖစ္ျဖစ္ page တခ်ိဳ႕  မွာ VB နဲ႕ ေရးျပီး တခ်ိဳ႕မွာေတာ႕ C# နဲ႕ေရးတာမ်ိဳး လုပ္လို႕ ရေၾကာင္း ေျပာျပခ်င္ပါတယ္)

ေနာက္ထပ္ attribute ကေတာ႕

-MasterPageFile(master page မွာ "အေပၚ directive မွာ ေျပာခဲ႕သလို" ေရးထားျပီးမွ တျခား pages ေတြကေန ဒီ attribute ေလးနဲ႕  master file ရဲ႕ location ကိုေဖၚျပျပီး ေခၚေခၚ သံုးတာမ်ိဳး) တို႕ျဖစ္ပါတယ္။

 

Attributes ေတြနဲ႕ ပါတ္သက္ျပီး အေသးစိတ္ကိုေတာ႕  ေနာက္ထပ္ ပို႕စ္ေတြမွာ ၾကံဳရင္ၾကံဳသလို ထပ္ေျပာပါဦးမယ္။ အခုေတာ႕ calculator page ေလးကို create လုပ္ျပီး run ၾကည္႕ရေအာင္ေနာ္။

 

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

 

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

 

<html>

<head runat="server">

    <title>Calculator Page</title>

</head>

<body>

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

    <div>

        <asp:Label ID="lblFirst" runat="server" Text="First number"></asp:Label>

        <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>

        <br />

        <br />

        <asp:Label ID="lblSecond" runat="server" Text="Second number"></asp:Label>

        <asp:TextBox ID="txtSecond" runat="server"></asp:TextBox><br />

        <br />

        <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" />

  <br />

        <br />

        The answer is:

        <asp:Label ID="lblAnswer" runat="server" ></asp:Label>

  </div>

  </form>

</body>

</html>

 

Calculator.aspx.cs(ဖုိင္နာမည္ ရွိျပီးသားတြင္ရိုက္ရန္)

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

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

{

    protected void btnAdd_Click(object sender, EventArgs e)

    {

        decimal a = decimal.Parse(txtFirst.Text);

        decimal b = decimal.Parse(txtSecond.Text);

        decimal c = a + b;

        lblAnswer.Text = c.ToString();

    }

}

 

ဖုိင္ဘယ္လို အသစ္ထည္႕ရတယ္ browser မွာေပၚေအာင္ ဘယ္လို run ရတယ္ဆုိတာ ထပ္မေျပာေတာ႕ဘူးေနာ္။ shortcut အေနနဲ႕  run ၾကည္႕ခ်င္ရင္ေတာ႕  .aspx ဖိုင္ကေန function key 'F5' နွိပ္ျပီး run ၾကည္႕ႏုိင္ပါတယ္။

 

 data ေလးေတြ ထည္႕ျပီး Add button ကို ႏွိပ္လိုက္ရင္ ကို္ယ္ေမွ်ာ္လင္႕ထားတဲ႕ အေျဖေလးေတြ႕လုိ႕  ဒီသင္ခန္းစာေလးနဲ႕ ေပ်ာ္ရႊင္ႏိုင္ပါေစေနာ္။

အခ်ိန္လဲ အားေသးတယ္ programming ကို တကယ္စိတ္၀င္စားတယ္ဆုိရင္ေတာ႕  ေပါင္းတာအျပင္ ႏႈတ္တာ၊ ေျမွာက္တာ၊ စားတာေလးေတြ လုပ္ဖုိ႕  button ေလးေတြ ထပ္ create လုပ္ျပီးစမ္းၾကည္႕ၾကပါဦးစို႕ ဗ်ိဳးးးးးးးးးးး

 

(ကုဒ္ဒင္း အဆင္မေျပတာေတြ႕လွ်င္ ကြန္႕မန္႕ထားခဲ႕ပါရန္)

1 comment:

dare2fight said...

HI ma meloday !!!

I also learning ASP.net and can you pls kindly tell me what are the good books to read.

Thanks a lot