PDA

View Full Version : آموزش: آشنایی با ViewData ، ViewBag و TempData



hakim22
چهارشنبه 29 فروردین 1397, 18:43 عصر
در محیط ASP Core هم مانند ASP MVC سه روش برای انتقال اطلاعات از کنترلر به ویو وجود دارد.


روش ViewData
این روش از قدیمی ترین تکنیک های گردش اطلاعات از کنترلر به ویو است. در این روش اطلاعات به صورت Weakly-Typed است و موقع تایپ کردن کدها از طرف VS راهنمایی دریافت نمی کنید (Intellisense). اطلاعات به صورت جفتهای Key-Value است و با فراخوانی کلید می توانید مقدار آن را مشاهده کنید. همه ی داده های Model هم درون ViewData قرار می گیرد. در حقیقا مدل در View ها از درون ViewData خوانده میشود. با این تفاوت که مدل Strongly-Typed است و شهروند درجه اول در محیط ویو است.


روش ViewBag
داده های درون ViewBag آینه تمام نما یا کپی کامل اطلاعات درون ViewData است. با این تفاوت که این کپی روی یک شی dynamic انجام گرفته است. شی dynamic در #C می تواند بعد از کامپایل تغییر کند و خصوصیات جدید دریافت کند. به همین دلیل نیاز نیست که خصوصیات مدل یا کلیدها را قبلا در کد تعریف کنید و می توانید آن را مستقیما بخوانید.


روش TempData
اطلاعات در این روش مانند دو روش قبل به صورت Key-Value دخیره میشود و می توانید هر نوع داده ای را ذخیره کنید اما حجم داده دارای محدودیت است و بهتر است از 500 بایت فراتر نرود. اطلاعات TempData در ASP Core رمز گذاری شده و درون Cookie ذخیره میشود. به این معنی که با تغییر مرورگر توسط کاربراز بین میرود. نکته ی مهم در مورد TempData این است که بلافاصله بعد از آنکه اطلاعات آن خوانده شد پاک میشود. از این روش برای ارسال اطلاعاتی که نیاز به نگه داری بلند مدت و یا هنگام Redirect استفاده میشود.


در Razor Pages امکان استفاده از ViewBag وجود ندارد و این امکان قرار نیست به آن اضافه شود. به طور کلی توصیه میشود همیشه از ViewData استفاده کنید چون ViewBag متغیر دینامیک است و پردازش آن زمان بیشتری میگیرد.