হাসিব, তোমার দেওয়া টপিকগুলোর ওপর ভিত্তি করে ASP.NET Core MVC-এর এই কুইক চিটশিটটি বানিয়ে দিলাম। প্রজেক্টের কাজ বা ইন্টারভিউয়ের আগে ঝালিয়ে নিতে বেশ কাজে দেবে।
ডেটা পাসিং (কন্ট্রোলার থেকে ভিউ)
কন্ট্রোলার থেকে ভিউতে ডেটা পাঠানোর প্রধান তিনটি উপায়:
| মাধ্যম | টাইপ | ব্যবহার | বৈশিষ্ট্য |
|---|---|---|---|
| ViewData | Dictionary | ViewData[“Title”] = “Home” | Loosely typed। ভিউতে রিসিভ করার সময় টাইপ কাস্টিং লাগে। |
| ViewBag | Dynamic | ViewBag.Title = “Home” | ViewData-র ডাইনামিক রূপ। টাইপ কাস্টিং লাগে না, তবে রানটাইমে এরর আসতে পারে। |
| Strongly Typed | Model Class | @model App.Models.User | Compile-time চেকিং হয়। ডেটা পাঠানোর সবচেয়ে নিরাপদ উপায়। |
গ্লোবাল ভিউ ফাইলস
ভিউ ইঞ্জিন কাজ শুরু করার আগে এই দুটি ফাইল সবচেয়ে গুরুত্বপূর্ণ ভূমিকা পালন করে:
- _ViewStart.cshtml: অ্যাপের সব ভিউয়ের জন্য ডিফল্ট লেআউট সেট করে দেয়। এর ফলে প্রতিটা ভিউতে গিয়ে বারবার লেআউটের পাথ বলে দিতে হয় না।
- _ViewImports.cshtml: গ্লোবাল নেমস্পেস এবং ট্যাগ হেল্পার (Tag Helpers) ইম্পোর্ট করার জন্য ব্যবহার হয়। একবার এখানে ডিক্লেয়ার করলে সব ভিউ থেকে এক্সেস পাওয়া যায়।
লেআউট এবং রেন্ডারিং
পুরো অ্যাপ্লিকেশনের UI স্ট্রাকচার ঠিক রাখতে এগুলো ব্যবহৃত হয়:
| টপিক | কাজ | কীভাবে ব্যবহার করতে হয় |
|---|---|---|
| Layout View | অ্যাপের মাস্টার পেজ (যেমন: Header, Footer)। | ভিউতে Layout = “_Layout”; লিখে। |
| RenderBody() | লেআউটের ভেতরে ঠিক যে জায়গায় মূল ভিউ রেন্ডার হবে। | লেআউট ফাইলের ভেতরে @RenderBody() |
| Sections | নির্দিষ্ট ভিউ থেকে লেআউটে কাস্টম স্ক্রিপ্ট বা স্টাইল পাঠানো। | লেআউটে @RenderSection(“Scripts”, false) |
| Html.Raw() | কোনো স্ট্রিংকে সরাসরি HTML হিসেবে রেন্ডার করা। | @Html.Raw(“Hello”) |
Partial View বনাম View Component
UI-এর ছোট ছোট অংশ রিইউজ করার জন্য এই দুটির তুলনা প্রায়ই ইন্টারভিউতে আসে:
| বৈশিষ্ট্য | Partial View | View Component |
|---|---|---|
| প্রধান কাজ | সিম্পল বা স্ট্যাটিক UI মার্কআপ রিইউজ করা। | কমপ্লেক্স লজিকসহ UI রিইউজ করা (মিনি কন্ট্রোলার)। |
| লজিক ক্লাস | নিজস্ব কোনো C# ক্লাস থাকে না। | নিজস্ব C# ক্লাস থাকে, যেখানে ডিপেন্ডেন্সি ইনজেকশন করা যায়। |
| ডেটা সোর্স | প্যারেন্ট ভিউ বা কন্ট্রোলার থেকে ডেটা নেয়। | ডেটাবেস বা এপিআই থেকে স্বাধীনভাবে ডেটা আনতে পারে। |
| ভিউ কল করা | <vc:cart-summary /> | |
| কোড কল করা | return PartialView(); | return ViewComponent(); |
কোনো নির্দিষ্ট টপিকের (যেমন: Strongly Typed Views with Multiple Models বা ViewComponentResult) কোড এক্সাম্পল লাগলে জানাতে পারো।