#AskMe

ការសិក្សាពីរបៀបប្រើប្រាស់ Model Binding ក្នុង ASP.NET MVC 5

មាតិកា

I. សេចក្តីផ្តើម

II.  គោលបំណង

III. តម្រូវការ

IV. អ្វីទៅជា Model Binding?

V.  No Binding

VI. Simple Binding

VII.Class Binding

VIII.Complex Binding

I. សេចក្តីផ្តើម

នៅក្នុង Tutorial នេះ យើងនឹងសិក្សាពីរបៀបប្រើប្រាស់ Model Binding នៅក្នុង ASP.NET MVC។ ដើម្បីយល់បន្ថែមទៀតសូមធ្វើការអនុវត្តន៍ដូចខាងក្រោម។

II. គោលបំណង

ក្រោយពីអនុវត្តន៍តាម Tutorial នេះ លោកអ្នកនឹងយល់អំពី

III. តម្រូវការ

ដើម្បីអាចសិក្សា បានយើងត្រូវមាន

IV. អ្វីទៅជា Model Binding?

តើយើងធ្លាប់បាយឆ្ងល់ថា តើ form dataទទួលយករាល់ properties របស់ model បានយ៉ាងដូចម្តេចទេ?សូមធ្វើការមើលទៅកាន់រូបខាងក្រោមនេះ៖

V. No Binding

No Binding មានន័យថាការ access data ធ្វើឡើងដោយផ្ទាល់ ដោយគ្មានការ bind ទៅកាន់ specific model ឡើយ។

ឧទាហរណ៍

namespace MvcForms.Models

{

    public class StudentModel

    {

        public int Id { get; set; }

        public string Name { get; set; }

    }

}

<h2>Mvc Forms – Model Binding</h2>

@using (Html.BeginForm())

{

    <table>

        <tr>

            <td>Enter ID: </td>

            <td>@Html.TextBox(“Id”)</td>

        </tr>

        <tr>

            <td>Enter Name: </td>

            <td>@Html.TextBox(“Name”)</td>

        </tr>

        <tr>

            <td colspan=”2″><input type=”submit” value=”Submit”></td>

        </tr>

    </table>

}

<h4 style=”color:purple”>

    ID: @ViewBag.Id<br />

    Name: @ViewBag.Name<br />

</h4>

public ActionResult Index()

{

    if (Request.Form.Count > 0)

    {

        ViewBag.Id = Request.Form[“Id”];

        ViewBag.Name = Request.Form[“Name”];

        return View(“Index”);

    }

    return View();

}

VI. Simple Binding

នៅក្នុង Simple Binding ត្រូវបាន pass parameter នៅក្នុង action method ជាមួយនឹងឈ្មោះដូចគ្នាទៅនឹង properties របស់ model។ ចំពោះ MVC default Binder នឹងធ្វើការmap​នូវ action method ដោយស្វ័យប្រវត្តិនូវ request.

public ActionResult Index(int Id, string Name)

{

    ViewBag.Id = Id;

    ViewBag.Name = Name;

    return View(“Index”);

}

VII. Class Binding

នៅក្នុង Class Binding ត្រូវបាន pass model ជា parameter នៅក្នុងaction method ហើយបន្ទាប់មក access នូវ variable ដែលជា member របស់វាទាំងមូល។

public ActionResult Index(StudentModel sm)

{

    ViewBag.Id = sm.Id;

    ViewBag.Name = sm.Name;

    return View(“Index”);

}

VIII. Complex Binding

Complex Binding វាត្រូវបានគេប្រើដើម្បី apply multiple នៅក្នុង view តែមួយ។ ខាងក្រោមនេះគឺជាឧទាហរណ៍ដែលបង្ហាញយើងអំពីរបៀប bind នូវ multiple models នៅក្នុង view តែមួយ។

ជំហានទី១៖ បង្កើត class models ចំនួន២ដូចខាងក្រោម

namespace MvcForms.Models

{

    public class StudentModel

    {

        public int Id { get; set; }

        public string Name { get; set; }

        public CourseModel courseModel { get; set; }

    }

}

namespace MvcForms.Models

{

    public class CourseModel

    {

        public int Id { get; set; }

        public string Course { get; set; }

        public string Duration { get; set; }

    }

}

សូមធ្វើការអង្កេតមើល យើងបានបន្ថែម CourseModel ជា Property នៅក្នុង StudentModel។ ដូច្នេះ StudentModel មានសិទ្ធិដើម្បី access នូវ property របស់ CourseModel។

ជំហានទី២៖ បង្កើត Form ដូចខាងក្រោម

@model MvcForms.Models.StudentModel

<h2>Mvc Forms – Model Binding</h2>

@using (Html.BeginForm())

{

    <table>

        <tr>

            <td>Enter ID: </td>

            <td>@Html.TextBoxFor(m => m.Id)</td>

        </tr>

        <tr>

            <td>Enter Name: </td>

            <td>@Html.TextBoxFor(m => m.Name)</td>

        </tr>

        <tr>

            <td>Enter Course: </td>

            <td>@Html.TextBoxFor(m => m.courseModel.Course)</td>

        </tr>

        <tr>

            <td>Enter Duration: </td>

            <td>@Html.TextBoxFor(m => m.courseModel.Duration)</td>

        </tr>

        <tr>

            <td colspan=”2″><input type=”submit” value=”Submit”></td>

        </tr>

    </table>

}

<h4 style=”color:purple”>

    ID: @ViewBag.Id<br />

    Name: @ViewBag.Name<br />

    Course: @ViewBag.Course<br />

    Duration: @ViewBag.Duration<br />

</h4>

ជំហានទី៣៖ បង្កើត Action Method ដូចខាងក្រោម

[HttpGet]

public ActionResult Index()

{

    return View();

}

[HttpPost]

public ActionResult Index(StudentModel sm)

{

    ViewBag.Id = sm.Id;

    ViewBag.Name = sm.Name;

    ViewBag.Course = sm.courseModel.Course;

    ViewBag.Duration = sm.courseModel.Duration;

    return View(“Index”);

}

លទ្ធផល