آشنایی با Model Binding Attributes در ASP.NET CORE

تهران آی تی / برنامــه نویــسـی / آشنایی با Model Binding Attributes در ASP.NET CORE

آشنایی با Model Binding Attributes در ASP.NET CORE

در این آموزش قصد آشنایی با Model Binding Attributes را داریم. در ASP.NET Core، شما می‌توانید رفتار Model Binding را با استفاده Attributes ها سفارشی کنید. Model Binding فرآیندی است که طی آن ASP.NET Core داده‌های ورودی (مانند داده‌های فرم، کوئری استرینگ و … ) را به پارامترهای مربوط به اکشن‌ها یا به مدل‌های داده‌ای متصل می‌کند.

شما می‌توانید از Attribute های مختلفی برای سفارشی کردن این فرآیند استفاده کنید. برخی از این اتربیوت ها عبارتند از:

اتربیوت [Bind]

به شما امکان می‌دهد که رفتار Model Binding خود را سفارشی‌سازی کنید. با استفاده از این اتربیوت، می‌توانید مشخص کنید که کدام Property یک مدل باید در فرآیند Model Binding در نظر گرفته شوند و کدام Property نادیده گرفته شوند.

فرض کنید مدلی به نام Person ایجاد کردیم.

public class Person
{
public int id { get; set; }
public string name { get; set; }
public string family { get; set; }
public int age { get; set; }
}

و در اکشن خود مشخص میکنیم، فرایند Model Binding فقط برای پراپرتی های name,family,age انجام شود.

public IActionResult Index([Bind("age,name,family")]Person person)
{
if (!ModelState.IsValid) {
return BadRequest(ModelState);
}
return Ok(person);
}

حال تمامی پراپرتی ها را برای اکشن ارسال میکنیم. ولی پراپرتی id برابر با ۰ میشود با اینکه مقدار ۱۱ را برای آن ارسال کردیم. چون مشخص کردیم که اجازه بایند ندارد.

اتربیوت [Bind] در ModelBinding

اتربیوت [Bind] در ModelBinding

  • اتربیوت [Bind] به ما کمک می‌کند تا کنترل دقیق‌تری بر روی Model Binding داشته باشیم. و از Bind داده های غیر ضروری یا حساس در فرآیند Model Binding جلوگیری کنید.
  • استفاده از اتربیوت [Bind] می‌تواند امنیت برنامه را افزایش دهد زیرا از Bind داده‌های غیر ضروری یا حساس به مدل‌ها ما جلوگیری می‌کند.

نکته مهم: از اتربیوت Bind برای اجبار به پر بودن یا خالی نبودن فیلد های یک مدل استفاده نمیشود. بلکه هدف این است مشخص کنیم چه اطلاعاتی توسط سیستم پر شود و چه اطلاعاتی توسط کاربر ارسال شود.

اتربیوت [BindRequired]

تضمین می‌کند یک Property خاص باید حتماً در داده‌های ورودی وجود داشته باشد. اگر این خاصیت در ورودی موجود نباشد، Model Binding شکست می‌خورد و یک Model Error ایجاد می‌شود. این ویژگی بیشتر در سناریوهایی مفید است که وجود یک داده خاص برای عملکرد صحیح برنامه ضروری است.

روش اول : فرض کنید باید حتما مقدار Age حتما در داده‌های ورودی وجود داشته باشد.

public IActionResult Index2(int id,string name,string family,[BindRequired]int age)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok("ok");
}

روش دوم : افزودن اتربیوت در کلاس مدل

public class Person
{
public int id { get; set; }
public string? name { get; set; }
public string? family { get; set; }
[BindRequired]
public int age { get; set; }
}

  • فقط برای Model Binding از منابع غیر Body مانند کوئری استرینگ و فرم‌ها کاربرد دارد. برای منابع Body ، می‌توان از ویژگی‌های اعتبارسنجی مانند [Required] استفاده کرد.
  • این اتربیوت بیشتر زمانی مفید است که بخواهید اطمینان حاصل کنید که ورودی‌های ضروری حتماً در درخواست‌های کاربر وجود داشته باشند.

اتربیوت [BindNever]

به Model Binding دستور می‌دهد که یک Property خاص را نادیده بگیرد. به عبارت دیگر، این ویژگی تضمین می‌کند که مقادیر ورودی کاربر برای این Property خاص به هیچ وجه bind نمی‌شوند. این ویژگی زمانی مفید است که بخواهید اطمینان حاصل کنید که برخی از خصوصیات مدل توسط کاربر تغییر نمی‌کنند و فقط باید از داخل کد سرور مقداردهی شوند.

روش اول : فرض کنید مقدار id باید نادیده گرفته شود و توسط سیستم پر شود.

public IActionResult Index2([BindNever]int id,string name,string family,int age)
{
id = 335;
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok("ok");
}

روش دوم : افزودن اتربیوت در کلاس مدل

public class Person
{
[BindNever]
public int id { get; set; }
public string? name { get; set; }
public string? family { get; set; }
public int age { get; set; }
}

  • اتربیوت [BindNever] برای جلوگیری از Bind مقادیر ورودی توسط کاربر استفاده می‌شود. و برای مقادیری که نباید توسط کاربر تنظیم شوند، مانند ID یا مقادیر حساس، مفید است.
  • این اتربیوت به Model Binding اجازه می‌دهد تا فقط مقادیر مورد نظر را از ورودی کاربر دریافت کند و مقادیر مهم یا حساس را نادیده بگیرد.

اتربیوت […FROM]

این اتربیوت به شما امکان می‌دهند که مشخص کنید داده‌های ورودی از کدام بخش درخواست باید گرفته شوند.

  • اتربیوت [FromQuery]: برای دریافت داده‌ها از کوئری استرینگ.
  • اتربیوت [FromRoute]: برای دریافت داده‌ها از پارامترهای مسیریابی.
  • اتربیوت [FromForm]: برای دریافت داده‌ها از داده‌های فرم.
  • اتربیوت [FromBody]: برای دریافت داده‌ها از بدنۀ درخواست.
  • اتربیوت [FromHeader]: برای دریافت داده‌ها از هدرهای
  • اتربیوت HTTP. [FromServices]: برای دریافت داده‌ها از سرویس‌هایDependency Injection.

public IActionResult Index3( [FromForm]Person person)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok(person);
}

  • استفاده از این اتربیوت به شما امکان می‌دهد که منابع داده‌های ورودی را به صورت دقیق کنترل کنید.
  • ترکیب این اتربیوت ها در یک اکشن امکان‌پذیر است. و میتوانید از منابع مختلف داده‌ها را بگیرید.
  • با استفاده از این ویژگی‌ها می‌توانید کنترل بهتری بر روی ورودی‌های کاربر داشته باشید و برنامه خود را امن‌تر کنید.
دانلود سورس کد پروژه از گیت هاب دانلود
جستجو کنید

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد