ASP.Net MVC-তে ViewData, ViewBag, এবং TempData হল তিনটি গুরুত্বপূর্ণ ডেটা পাস করার পদ্ধতি যা কন্ট্রোলার এবং ভিউ এর মধ্যে ডেটা শেয়ার করার জন্য ব্যবহৃত হয়। প্রতিটি পদ্ধতির কিছু বৈশিষ্ট্য এবং ব্যবহারিক পার্থক্য রয়েছে। নিচে এই তিনটি পদ্ধতি এবং তাদের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।
ViewData
ViewData একটি ডিকশনারি অবজেক্ট যা কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এটি সাধারণত ছোট আকারের ডেটা বা এক্সট্রা ডেটা শেয়ার করার জন্য ব্যবহার করা হয়। ViewData পাস করা ডেটা এক এক্সিকিউশন রাউন্ডের জন্য বৈধ থাকে, অর্থাৎ, এটি কেবল সেই রিকোয়েস্টের জন্য দৃশ্যমান থাকে।
ব্যবহার:
- ViewData একটি Dictionary<string, object> টাইপের অবজেক্ট, যা কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য ব্যবহার করা হয়।
- এটি strongly typed নয়, অর্থাৎ ডেটার ধরন নির্দিষ্ট করা হয় না, তবে এটি সাধারণত object হিসেবে প্রেরিত হয়, তাই ভিউতে ডেটা রিট্রাইভ করার সময় কাস্টিং করতে হতে পারে।
উদাহরণ:
Controller:
public ActionResult Index()
{
ViewData["Message"] = "Hello from ViewData!";
return View();
}
View (Index.cshtml):
<h2>@ViewData["Message"]</h2>
এখানে, ViewData["Message"] কন্ট্রোলার থেকে ভিউতে পাঠানো ডেটা রিটার্ন করছে।
ViewBag
ViewBag হল একটি শক্তিশালী বিকল্প ViewData এর, যা ডেটা পাঠানোর জন্য আরও সরল এবং সহজ উপায় প্রদান করে। এটি একটি ডাইনামিক প্রপার্টি, যা কন্ট্রোলার থেকে ভিউতে ডেটা পাস করার জন্য ব্যবহার করা হয়। ViewBagের মধ্যে ডেটা নির্দিষ্ট করার সময় কোনও কাস্টিং বা ডিকশনারি সঠিকভাবে ব্যবহার করার দরকার হয় না, কারণ এটি ডাইনামিক টাইপ।
ব্যবহার:
- ViewBag হচ্ছে একটি dynamic প্রপার্টি, যা কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য ব্যবহৃত হয়।
- এটি আরও সহজ এবং কোড কমপ্লেক্সিটি কমানোর জন্য প্রয়োজনীয়।
উদাহরণ:
Controller:
public ActionResult Index()
{
ViewBag.Message = "Hello from ViewBag!";
return View();
}
View (Index.cshtml):
<h2>@ViewBag.Message</h2>
এখানে ViewBag.Message ডাইনামিকভাবে ডেটা রিটার্ন করছে।
TempData
TempData কন্ট্রোলার থেকে ভিউতে বা এক রিকোয়েস্ট থেকে অন্য রিকোয়েস্টে ডেটা শেয়ার করার জন্য ব্যবহৃত হয়। এটি মূলত পরবর্তী রিকোয়েস্টে ডেটা রাখার জন্য ব্যবহার করা হয়, অর্থাৎ, একটি রিকোয়েস্টের পরবর্তী রাউন্ডে এই ডেটা অ্যাক্সেস করা যাবে। TempData মূলত ViewData এবং ViewBag এর চেয়ে বেশি সময় ধরে ডেটা সংরক্ষণ করতে সক্ষম।
ব্যবহার:
- TempData কেবলমাত্র এক রাউন্ড (অথবা রিকোয়েস্ট) সময় ধরে ডেটা সংরক্ষণ করে, তবে এটি পুনঃব্যবহারযোগ্য, অর্থাৎ এক রিকোয়েস্টের পরের রিকোয়েস্টে ডেটা এক্সেস করা যায়।
- TempData কন্ট্রোলার এবং ভিউ এর মধ্যে ডেটা আদান প্রদান করার জন্য ব্যবহৃত হয়, বিশেষত Redirect-এ পেরামিটার পাঠানোর ক্ষেত্রে।
উদাহরণ:
Controller:
public ActionResult Index()
{
TempData["Message"] = "This is a message from TempData!";
return RedirectToAction("About");
}
Controller (About Action):
public ActionResult About()
{
ViewBag.Message = TempData["Message"];
return View();
}
View (About.cshtml):
<h2>@ViewBag.Message</h2>
এখানে, TempData["Message"] ব্যবহার করে RedirectToAction এর মাধ্যমে ডেটা পাঠানো হয়েছে এবং পরবর্তী রিকোয়েস্টে ViewBag-এ সেট করা হয়েছে।
পার্থক্য
| বৈশিষ্ট্য | ViewData | ViewBag | TempData |
|---|---|---|---|
| টাইপ | Dictionary<string, object> | Dynamic | Dictionary<string, object> |
| ডেটা জীবনকাল | এক রিকোয়েস্টের জন্য | এক রিকোয়েস্টের জন্য | পরবর্তী রিকোয়েস্ট পর্যন্ত |
| কাস্টিং প্রয়োজন | হ্যাঁ, ডেটা কাস্ট করতে হবে | না, ডাইনামিক টাইপ ব্যবহার | হ্যাঁ, ডেটা কাস্ট করতে হবে |
| ব্যবহার | সাধারণ ডেটা পাঠানোর জন্য | সহজ এবং দ্রুত ডেটা পাঠানোর জন্য | পরবর্তী রিকোয়েস্টে ডেটা শেয়ার করার জন্য |
সারমর্ম
ViewData, ViewBag, এবং TempData তিনটি গুরুত্বপূর্ণ পদ্ধতি যা ASP.Net MVC-তে কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। ViewData এবং ViewBag সাধারণত একই রিকোয়েস্টের মধ্যে ডেটা শেয়ার করতে ব্যবহৃত হয়, তবে TempData পরবর্তী রিকোয়েস্টের জন্য ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। প্রতিটি পদ্ধতির আলাদা ব্যবহার এবং সীমাবদ্ধতা রয়েছে, এবং আপনি কোন পদ্ধতিটি ব্যবহার করবেন তা নির্ভর করে আপনার প্রয়োজনীয়তার উপর।