ASP.NET Core MVC বা Razor Pages অ্যাপ্লিকেশনে Model Binding এবং Validation Attributes দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা ডেটা গ্রহণ এবং সঠিকতা নিশ্চিত করার জন্য ব্যবহৃত হয়। Model Binding ব্যবহৃত হয় ইউজার ইনপুট থেকে ডেটা মডেলে ম্যাপ করার জন্য, আর Validation Attributes ব্যবহার করে ইনপুট ডেটার বৈধতা পরীক্ষা করা হয়।
Model Binding হল একটি প্রক্রিয়া যার মাধ্যমে ASP.NET Core একটি HTTP রিকোয়েস্টের ডেটা (যেমন ফর্ম ডেটা, URL প্যারামিটার, কুकी, অথবা কুয়েরি স্ট্রিং) একটি মডেল ক্লাসে পরিবর্তন করে। যখন একটি ফর্ম সাবমিট করা হয় বা একটি API রিকোয়েস্ট আসে, তখন ASP.NET Core স্বয়ংক্রিয়ভাবে সেই ইনপুট ডেটা আপনার মডেলে (Model) ম্যাপ করে দেয়।
উদাহরণস্বরূপ, যদি আপনি একটি পণ্য তৈরি করতে চান এবং ইউজার ফর্মে নাম, দাম, এবং বিবরণ প্রদান করেন, তাহলে সেই ইনপুট ডেটাকে মডেলে ম্যাপ করা হয়। নিচে একটি উদাহরণ দেওয়া হল:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public string Description { get; set; }
}
এখন, ফর্মে ইউজারের ইনপুট হিসাবে এই ডেটা পাঠানো হলে, ASP.NET Core এই ডেটাকে Product মডেলে বদলে দেয়। উদাহরণ:
public class ProductController : Controller
{
[HttpPost]
public IActionResult Create(Product product)
{
// Model Binding দ্বারা 'product' ভেরিয়েবলটি পূর্ণ হয়ে যাবে
// এখানে আপনি product.Name, product.Price ইত্যাদি অ্যাক্সেস করতে পারবেন
if (ModelState.IsValid)
{
// ডেটা সেভ করা হবে
}
return View();
}
}
এখানে, Model Binding প্রক্রিয়ায় Product মডেলটি স্বয়ংক্রিয়ভাবে ফর্ম ডেটা থেকে পূর্ণ হয়ে যাবে এবং আপনি product.Name, product.Price ইত্যাদি অ্যাক্সেস করতে পারবেন।
Validation Attributes হল এক ধরনের ডেটা যাচাই পদ্ধতি, যা মডেল ক্লাসে যুক্ত করা হয়। এগুলি ইউজারের ইনপুট ডেটার বৈধতা পরীক্ষা করে এবং যাচাই করে যে সেই ডেটা সঠিক কি না। ASP.NET Core এই বৈধতা পরীক্ষা করার জন্য Data Annotations ব্যবহার করে, যা খুব সহজেই মডেল ক্লাসে যুক্ত করা যায়।
বিভিন্ন ধরনের Validation Attributes এর মধ্যে কয়েকটি হল:
উদাহরণ:
public class Product
{
[Required(ErrorMessage = "পণ্যের নাম বাধ্যতামূলক")]
public string Name { get; set; }
[Range(1, 10000, ErrorMessage = "মূল্য অবশ্যই ১ থেকে ১০,০০০ এর মধ্যে হতে হবে")]
public decimal Price { get; set; }
[StringLength(500, ErrorMessage = "বিবরণ ৫০০ ক্যারেক্টারের মধ্যে হতে হবে")]
public string Description { get; set; }
}
এখানে, [Required], [Range], এবং [StringLength] অ্যাট্রিবিউটগুলি ইনপুট ডেটা যাচাই করতে ব্যবহৃত হচ্ছে।
যখন একটি ফর্ম সাবমিট করা হয়, তখন Model Binding এবং Validation Attributes একসাথে কাজ করে। ASP.NET Core স্বয়ংক্রিয়ভাবে মডেলটি পূর্ণ করে এবং ModelState.IsValid চেক করে দেখবে যে, সমস্ত বৈধতা পরীক্ষা পাশ হয়েছে কিনা।
public IActionResult Create(Product product)
{
if (ModelState.IsValid)
{
// ডেটা সঠিক হলে, ডেটা সেভ করুন
// ডেটা সেভ করার প্রক্রিয়া
return RedirectToAction("Success");
}
else
{
// ডেটা সঠিক না হলে, ব্যবহারকারীকে ফেরত পাঠান
return View(product);
}
}
এখানে, ModelState.IsValid চেক করে, যদি কোনো ভুল থাকে (যেমন কোন ফিল্ড ফাঁকা বা সীমানার বাইরে ডেটা) তাহলে ফর্ম আবার প্রদর্শিত হবে এবং ব্যবহারকারীকে ভুল তথ্য জানানো হবে।
যদি আপনি কোনো বিশেষ ধরনের বৈধতা যাচাই করতে চান, যেমন পাসওয়ার্ডের শক্তি, তাহলে Custom Validation ব্যবহার করতে পারেন। এটি IValidatableObject ইন্টারফেস ইমপ্লিমেন্ট করে করা যায়।
public class Product : IValidatableObject
{
public string Name { get; set; }
public decimal Price { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Price < 1)
{
yield return new ValidationResult("মূল্য অবশ্যই ১ বা তার বেশি হতে হবে", new[] { "Price" });
}
}
}
এখানে, Validate মেথডে কাস্টম ভ্যালিডেশন লজিক লেখা হয়েছে, যা Price এর মান ১ এর কম হলে একটি ভুল বার্তা ফেরত দেয়।
Model Binding এবং Validation Attributes ASP.NET Core MVC অ্যাপ্লিকেশনে ডেটা প্রক্রিয়া এবং যাচাইয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। Model Binding ইউজারের ইনপুট ডেটাকে স্বয়ংক্রিয়ভাবে মডেল ক্লাসে ম্যাপ করে, এবং Validation Attributes ডেটার সঠিকতা নিশ্চিত করে। এই দুটি সুবিধা ব্যবহার করে আপনি একটি দক্ষ এবং সুরক্ষিত ফর্ম হ্যান্ডলিং সিস্টেম তৈরি করতে পারবেন।
common.read_more