Controller Action အားလေ့လာကြည်ခြင်း
Action Method တွေဟာ တခြား .net method တွေလိုပဲ Process လုပ်ဖို့ Input data တွေလိုပါတယ်။ Data တွေကလည်း Source ပေါင်းစုံကနေလာနိုင်ပါတယ်။ ဥပမာ အနေနဲ့
- Environment
- Operating System
- User Request
- Direct Parameters
စတဲ့နေရာတွေကနေ ရောက်လာနိုင်ပါတယ်။ ဒါပေမယ့် Source တွေဘယ်လောက်ပဲများများ အဓိကခွဲလိုက်ရင်တော့ Data ရောက်လာနိုင်တဲ့နေရာက ၃ မျိုးပဲရှိပါတယ်။ အဲဒါတွေကတော့
- Context Object
- Method Parameter
- Model Bindings
တို့ဖြစ်ပါတယ်။
Context Object
ဘယ်လို web request တွေပဲဖြစ်ဖြစ် အသုံးဝင်တဲ့ information တွေတွဲပါလာပါတယ်။ ဥပမာ
- Http Headers
- User Information
- Browser Information
- User’s IP Address
- Authenticatoin Information
အဲဒါတွေက Context object အမျိုးအစားထဲမှာ ပ ါ၀င်ပါတယ်။ Coding လေးနဲ့စမ်းကြည့်ကြရအောင်။ HomeController ထဲမှာ GetContextInfo ဆိုတဲ့ Action Method မှာရေးပါမယ်။
Function GetContextInfo() As String
Dim result As String = String.Empty
result = "User:" + User.Identity.Name + "<br/>" _
+ "Server:" + Server.MachineName + "<br/>" _
+ "Script Timeout:" + Server.ScriptTimeout.ToString + "<br/>" _
+ "User IP:" + Request.UserHostAddress + "<br/>" _
+ "Browser:" + Request.UserAgent + "<br/>" _
+ "Http Method:" + Request.HttpMethod + "<br/>" _
+ "Controller:" + RouteData.Values("Controller") + "<br/>" _
+ "Action:" + RouteData.Values("action") + "<br/>" _
+ "ID:" + RouteData.Values("id")
Return result
End Function
Application ကို Run ကြည့်ရင် အောက်က ပုံအတိုင်းမြင်ရမှာပါ။
အဲဒီမှာ ID မှာ ဘာမှ မပါလာတာကို သတိထားမိမှာပါ။ တကယ်လို့ Browser မှာ
http://localhost:(randomport)/home/Getcontextinfo/4
လို့ ပြောင်းရိုက် လိုက်ရင် ID မှာ 4 လို့ပေါ်လာမှာပါ။
Input Paremeters
Action method တွေကို process လုပ်ဖို့ လိုအပ်တဲ့ Data တွေကို Method ရဲ့ parameters တွေကနေလည်း ရရှိနိုင်ပါတယ်။ Method Parameters တွေကို Action Invoker က ရွေးချယ်တဲ့ နေရာမှာ အောက်ကလို အစဉ်လိုက်ရွေးချယ်ပါတယ်။
- Request.Form
- RouteData.Values
- Request.QueryString
Function UseParameter(ByVal ID As String, ByVal Name As String) As String
Dim result As String = String.Empty
result = "ID:" + ID + "<br/>" _
+ "Name:" + Name
Return result
End Function
အပေါ်က UseParameter Action Method ကို HomeController မှာရေးပါမယ်။ အဲဒီ Method မှာ Paremeter ၂ ခုပါပါတယ်။ String အမျိုးအစားတွေဖြစ်တဲ့ ID နဲ့ Name ပါ။ Browser မှာ run ကြည့်ရင် အောက်က ပုံအတိုင်းတွေ့ရမှာပါ။
ID ,Name ၂ ခုလုံး Blank တွေဖြစ်နေတာကို သတိထားမိမှာပါ။ တကယ်လို့ Browser မှာ
http://localhost:(randomport)/home/useparameter/5
လို့ရိုက်ကြည့်လိုက်ရင် ID မှာ 5 လို့ပြပေးမှာဖြစ်ပါတယ်။ တကယ်လို့
http://localhost:(randomport)/home/useparameter?id=45
လို့ရိုက်ကြည့်ရင် ID မှာ 45 လို့ပြပေးမှာပါ။ ဒါဆို UserParameter Action method ထဲက ID Parameter က ဘယ်လိုအလုပ်လုပ်သလဲလို့ မေးစရာရှိပါတယ်။ အပေါ်မှာပြောခဲ့ပြီးတဲ့ Order အတိုင်းလုပ်ပါတယ်။
ပထမဦးစားပေး Request Form ကိုလုပ်ပါတယ်။ Request Form မှာ အဲဒီ Paramater Name နဲ့တူတာမရှိဘူးဆိုရင် Route value ကိုလုပ်ပါတယ်။ Route Value မှာလည်း အဲဒီ Parameter မရှိဘူးဆိုရင်။ QueryString ကိုလုပ်ပါတယ်။ တကယ်လို့ QueryString မှာလည်း မပါဘူး ဆိုရင်တော့ Blank တွေ လုပ်သွားမှာပါ။
အပေါ်က ဥပမာ အရကြည့်ရင် ပထမ တခေါက်တုန်းက ID Parameter value ကို Route value ကနေ ယူပါတယ်။ ဒုတိယအကြိမ်မှာတော့ ID Parameter value ကို query string ကနေ ယူပါတယ်။ တကယ်လို့ browser မှာ
http://localhost:(randomport)/home/useparameter/100?id=9
လိို့ရိုက်ကြည့်ရင် ID value ကို ဘယ်လောက်နဲ့ လုပ်မလဲဆိုတော့ 100 နဲ့လုပ်ပါမယ်။ Order rule အရပါ။ တကယ်လို့ Request Form မှာ ID တန်ဖိုး ပါလာခဲ့ရင်တော့ Request Form က ID value နဲ့အလုပ်လုပ်ပါမယ်။ တကယ်လို့ Browser မှာ
http://localhost:(randomport)/home/useparameter/100?id=9&name=mg mg
လို့ရိုက်ကြည့်ရင်တော့ ID:100 နဲ့ Name:mg mg ဆိုပြီး ပြပေးမှာဖြစ်ပါတယ်။ တကယ်လို့ Request Form မှာ ပေးထားတဲ့နာမည်၊ Route Value မှာပေးထားတဲ့နာမည် နဲ့ Query String ကနေ ရောက်လာတဲ့ နာမည်တွေ တူနေပြီး သီခြား အလိုက် အလုပ်လုပ်ချင်တယ် ဆိုရင်တော့ Request.Form, Routedata.Values, Request.QueryString စတဲ့ ဆိုင်ရာ Function တွေကို တိုက်ရိုက် ယူသုံးလို့ရပါတယ်။
Model Bindings
Action method ထဲက data တွေဟာ Model တွေဆီကနေလည်းရောက်လာနိုင်ပါတယ်။ ဥပမာလေးနဲ့စမ်းကြည့်ပါမယ်။ Model folder ထဲမှာ Dog class တစ်ခုကို တည်ဆောက်လိုက်ပါတယ်။
Imports System.ComponentModel.DataAnnotations
Public Class Dog
<Required(ErrorMessage:="ID must be enter")>
Public Property ID As Integer
<Required(ErrorMessage:="ID must be enter")>
Public Property Name As String
<Required(ErrorMessage:="ID must be enter"), Range(0, 20, ErrorMessage:="Must be between 0 and 20")>
Public Property Age As Integer
End Class
Dog class ကိုစမ်းသပ်ဖို့အတွက် HomeController ထဲမှာ ListDog ဆိုတဲ့ Action method တစ်ခုကိုရေးပါတယ်။
Function ListDog() As ActionResult
Dim d As New Dog
d.ID = 1
d.Age = 15
d.Name = "Rambo"
Return View(d)
End Function
ListDog အတွက် View ကိုတည်ဆောက် ပေးရပါအုံးမယ်။ အဲဒီအတွက် ဘယ်လို လုပ်ရတယ်ဆိုတာကို နောက်အခန်းတွေမှာ အသေးစိတ် ဆက်ရေးပါအုံးမယ်။
ဒီ article မှာ Controller တွေရဲ့ action method တွေဟာ Process လုပ်ဖို့အတွက် Data တွေကို Source အမျိုးမျိုးကနေ ရယူပြီး အသုံးချတယ် ဆိုတာကိုသာ အဓိက တင်ပြလိုခြင်း ဖြစ်ပါတယ်။
Facebook comments:




