در این پست از وبسایت پرووید در رابطه با بررسی فرآیند Model Binding در ASP.NET MVC #1 صحبت خواهیم کرد. معماری MVC از معمول ترین و پرکاربردترین معماری های ساخت وب اپلیکیشن ها می باشد.

در این آموزش از وبسایت پرووید در رابطه با مبحث Model Binding در فریم ورک MVC صحبت خواهیم کرد. برای اینکه هر چه بهتر Model Binding را در فریم ورک MVC درک کنید بیاید اول مثالی بزنیم. در رابطه با به دست آوردن Value های درون HTTP Request به روش ASP.NET سنتی صحبت کنیم. در تصویر زیر مشاهده می کنید که برای به دست آوردن Value های Request های HttpGET و HttpPOST نیاز داریم که به طور مستقیم به Request به عنوان یک Object دسترسی پیدا کنیم.

این کار توسط پروپرتی QueryString و همچنین Indexer مربوط به شی Request انجام می شود. همانطور که در دو تصویر بالا مشاهده می کنید به منظور به دست آوردن Value های درون یک Request باید از پروپرتی QueryString و یا Indexer مربوط شی Request استفاده کنیم. این روش برای به دست آوردن Value های درون Request های HttpPOST و HttpGet روش غیر مناسب و خسته کننده و زمان بری می باشد.

بسته ی آموزش ویدئویی تبدیل شدن به یک توسعه دهنده Full-stack در دات نت سری اول

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی تبدیل شدن به یک توسعه دهنده Full-stack در دات نت سری اول نیز دیدن کنید.

با استفاده از Model Binding در فریم ورک MVC داده هایی که درون HTTP Request ها وجود دارند (چه آنهایی که در Query String قرار دارند و چه آنهایی که در Form Collection قرار دارند.)، به طور خودکار به پارامترهای Action Method ها تبدیل می شوند. این پارامتر ها هم میتوانند Primitive Type باشند و هم می توانند Complex Type باشند.

انجام Binding در Primitive Type ها

در ابتدا در رابطه با انجام Binding و Bind کردن Value های درون یک HttpGET Request به پارامترهای Action Method ها صحبت خواهیم کرد. همانطور که ممکن است بدانید HttpGET Request ها داده های خود را درون Query String قرار می دهند. فریم ورک MVC به صورت خودکار این داده ها را به پارامترهای یک Action Method تبدیل و یا اصطلاحاً Bind می کند. برای مثال در تصویر زیر یک پارامتر به نام id در Query String قرار گرفته است.

از آنجایی که Action Method ای با نام Edit دارای یک پارامتر با همین نام می باشد، مقدار درون این پارامتر Query String به طور خودکار به پارامتر id که در این Action Method تعریف شده است Bind می شود. دقت هم کنید که منظور ما در این بخش از Bind کردن همان تبدیل کردن می باشد. دقت کنید که یک Request مجبور نیست فقط یک پارامتر در Query String خود لحاظ کرده باشد. به عبارت دیگر یک Request می تواند چندین پارامتر در Query String خود داشته باشید.

با استفاده از Model Binding در فریم ورک MVC تک تک پارامترهای درون Query String به پارامترهای درون یک Action Method به صورت خودکار Bind می شوند.

بسته ی آموزش ویدئویی شروع به کار با ASP.NET Core و SignalR

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی شروع به کار با ASP.NET Core و SignalR نیز دیدن کنید.

برای مثال در کد زیر یک Action Method تعریف شده است که Edit نام دارد و دارای دو پارامتر می باشد.

public ActionResult Edit(int id, string name)
{            
    // do something here
            
    return View();
}

با رفتن به آدرس http://localhost/Student/Edit?id=1&name=John هر دو پارامتر id و name که در درون Query String لحاظ شده اند به پارامترهای این Action Method که از نوع int و string می باشند Bind خواهند شد.

انجام Binding در Complex Type

علاوه بر Bind کردن به Primitive Type ها، فریم ورک MVC می تواند Model Binding را بر روی Complex Type ها نیز انجام بدهد. به عبارت دیگر در فریم ورک MVC عملیات مدل Binding به صورت خودکار داده های درون یک Http POST Request را به پروپرتی های یک Complex Type که به عنوان پارامتر یک Action Method تبدیل یا اصطلاحاً Bind می کند.

بسته ی آموزش ویدئویی ساخت وب اپلیکیشن با ASP.NET MVC و React

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی ساخت وب اپلیکیشن با ASP.NET MVC و React نیز دیدن کنید.

بیاید یک مثال را در نظر بگیریم. کدی که در قسمت زیر مشاهده میکنید تعریف دو Model Class با نام های Student و Standard را نشان می دهند.

public class Student
{
    public int StudentId { get; set; }
    [Display(Name="Name")]
    public string StudentName { get; set; }
    public int Age { get; set; }
    public Standard standard { get; set; }
}

public class Standard
{
    public int StandardId { get; set; }
    public string StandardName { get; set; }
}

سپس در کد زیر یک Action Method را با نام Edit می بینید که یک پارامتر از نوع Student به عنوان ورودی دریافت کرده است.

[HttpPost]
public ActionResult Edit(Student std)
{
    var id = std.StudentId;
    var name = std.StudentName;
    var age = std.Age;
    var standardName = std.standard.StandardName;

    //update database here..

    return RedirectToAction("Index");
}

حال فریم ورک MVC داده های درون Form Collection را به صورت خودکار به این پارامتر ورودی که از نوع Student می باشند تبدیل می کند. این اتفاق زمانی می افتد که Request ای از نوع Http Post به این Action Method ارسال می شود. این موضوع در تصویر زیر نشان داده شده است.

استفاده از پارامترهای FormCollection به جای استفاده کردن از یک Complex Type به عنوان پارامتر ورودی یک Action Method می توانید از یک Object از کلاس FormCollection نیز استفاده کنید. این کار برای بازیابی تمامی Value ها از Form Field هایی که در درون View تعریف شده اند استفاده میشود. کد زیر این موضوع را نشان داده است.

در قسمت بعدی از این آموزش در رابطه با بررسی Bind Attribute در فریم ورک ASP.NET MVC صحبت خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *