روش های مختلفی برای ارسال اطلاعات از لایه View به Controller وجود دارد. که یکی از این روش ها استفاده از Query String بود که در آموزش قبلی مورد برسی قرار گرفت. به روش هایی که میتوان داده های کاربر را در سمت سرور یا همان Controller دریافت کنیم Model Binding گفته میشود. در این آموزش با برخی از روش های Binding آشنا میشویم.
Model Binding در ASP.NET به فرآیندی اطلاق میشود که در آن دادهها به طور خودکار توسط Request های کاربر در پارامترهای ورودی کنترلرها بایند میشود. این کار به برنامه نویسان اجازه میدهد تا دادههای ورودی کاربران را به راحتی و به صورت خودکار به مدلها، پارامترهای ورودی متدها، یا سایر ساختارهای دادهای تبدیل کنند.
Model Binding در ASP.NET Core یک فرآیند است که به طور خودکار دادهها را از درخواستهای HTTP استخراج میکند و آنها را به پارامترهای Action در کنترلرها متصل میکند. این فرآیند شامل استخراج دادهها از منابع مختلف مانند فرمها، Query String و مسیر Url یا همان Route است و آنها را به انواع دادههای .NET تبدیل میکند. Model Binding به توسعهدهندگان کمک میکند تا بدون نیاز به نوشتن کد اضافی برای استخراج و تبدیل دادهها، به راحتی با دادههای فرمها کار کنند.
public IActionResult Index()
{
return View();
}
[HttpGet]
public IActionResult Register()
{
return View();
}
[HttpPost]
public IActionResult Register(string Name, string Family, string Age, string Gender)
{
return View();
}
[HttpPost]
public IActionResult Register(RegisterUser registerUser)
{
if (ModelState.IsValid) {
return RedirectToAction("Index");
}
return View();
}
public class RegisterUser
{
public string Name { get; set; }
public string Family { get; set; }
public string Age { get; set; }
public string Gender { get; set; }
}
<form method="post" action="Register">
<input type="text" id="Name" name="Name" placeholder="Name" class="My-form" />
<input type="text" id="Family" name="Family" placeholder="Family" class="My-form" />
<input type="number" id="Age" name="Age" placeholder="Age" class="My-form" />
<label for="Gender">Men</label>
<input type="radio" value="M" id="Gender" name="Gender" />
<label for="Gender">Woman</label>
<input type="radio" value="F" id="Gender" name="Gender" />
<input type="submit" value="Register" class="My-form" />
</form>