انتقال اطلاعات با TempData در ASP.Net Core

ارسال اطلاعات از یک Controller به Controller دیگر با استفاده از TempData

انتقال اطلاعات با TempData در ASP.Net Core

برای ارسال اطلاعات از Controller به View علاوه بر روش های ViewBag و ViewData یک روش دیگری نیز در ASP.Net core به نام TempData وجود دارد. البته با وجود روش های ViewBag و ViewData کمتر از TempData برای ارسال اطلاعات از Controller به View استفاده می شود.

TempData in ASP.Net Core

در ASP.Net Core ما از TempData بیشتر برای ارسال اطلاعات از یک Controller به Controller دیگر استفاده می کنیم و از ViewBag و ViewData برای ارسال اطلاعات از controller به View استفاده می کنیم، چون این دو روش توانایی انتقال اطلاعات ار یک Controller به Controller دیگر را ندارند.

در تصویر زیر شما نحوه انتقال اطلاعات توسط ویژگی TempData را می بینید:

TempData in MVC

همانطور که در تصویر بالا می بینید، در اولین درخواست ما مقدار موردنظر خود را ("test") در یک پراپرتی TempData در متد Index() قرار می دهیم. در درخواست دوم به داده های خود که در پراپرتی TempData متد Index() ذخیره کردیم، دسترسی پیدا می کنیم. اما در درخواست سوم همانطور که در تصویر می بینید نمی توانیم به اطلاعات ذخیره شده خود در پراپرتی TempData دسترسی داشته باشیم، زیرا محتویات TempData بعد از درخواست دوم از بین می رود.

ویژگی TempData در ASP.NET Core MVC زمانی مفید خواهد بود که شما بخواهید اطلاعاتی را از یک متد به متد دیگر از یک یا چند Controller انتقال دهید. این ویژگی از دایرکتوری TempDataDictionary گرفته شده است.

در مثال زیر ما حالت اول را که انتقال اطلاعات بین دو Action Method در یک کنترلر است را پیاده سازی می کنیم. در حالت اول در اکشن Index با استفاده از TempData یک مقدار را دورن پراپرتی SiteName نگهداری می کنیم و در اکشن Display با استفاده از ViewBag مقدار را دریافت می کنیم.

TempData in ASP Core

اکنون مقدار موجود در پراپرتی Message اکشن متد Display را در View مربوط به اکشن Display به صورت زیر دریافت می کنیم.

آموزش tempData

خروجی مثال بالا به شکل زیر خواهد بود:

کار با TempData

حالت دوم انتقال اطلاعات از Action Method یک کنترلر به Action Method یک کنترلر دیگر است. برای این منظور کنترلر Home را به شکل زیر تغییر می دهیم:

TempData

همانطور که در اکشن Dispaly می بینید ما از متدی به نام Keep استفاده کرده ایم. این متد مقدار پراپرتی موردنظر ما را در حافظه ذخیره می کند.

حال کنترلر دیگری با نام Article را ایجاد می کنیم و درون اکشن متد Index آن دستورات زیر را می نویسیم:

TempData

در گام بعدی View ای برای اکشن متد Index ایجاد می کنیم و دستور زیر را جهت دریافت مقدار SiteName می نویسیم:

انتقال اطلاعات با TempData

اکنون اگر برنامه را اجرا کنیم خیلی راحت به مقدار پراپرتی SiteName که در کنترلر Home ایجاد شده بود دسترسی داریم.

ارسال اطلاعات با استفاده از TempData
TempData در ASP.Net Core ارسال اطلاعات با استفاده از TempData آموزش asp.net core mvc