
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
آموزش TempData در ASP.Net MVC
آموزش کار با TempData در ASP.Net MVC :
از TempData در چهارچوب کاری ASP.Net MVC برای نگهداری اطلاعات موقت (temporary data) استفاده شده، که می تواند در درخواست های بعدی برنامه به کار رود. اطلاعات tempData پس از پایان یافتن اجرای دستورات بعدی مربوط به آن، از حافظه پاک می شود.
قابلیت TempData، در زمانی که می خواهید اطلاعات غیر حساس (نه چیزی مثل رمز عبور) را از یک متد اجرایی action method به متد اجرایی دیگر در همان کنترلر و یا کنترلر دیگر، انتقال دهید، کاربرد دارد. TempData از نوع dictionary type است که از کلاس TempDataDictionary مشتق شده است.
شما می توانید همانند کد زیر، یک جفت مقدار / کلید (key/value Pair) را به TempData اضافه کنید :
public class HomeController : Controller { // GET: Student public HomeController() { } public ActionResult Index() { TempData["name"] = "Test data"; TempData["age"] = 30; return View(); } public ActionResult About() { string userName; int userAge; if(TempData.ContainsKey("name")) userName = TempData["name"].ToString(); if(TempData.ContainsKey("age")) userAge = int.Parse(TempData["age"].ToString()); // do something with userName or userAge here return View(); } }
در کد مثال فوق، اطلاعات را در یک tempData اضافه کرده و سپس همان data را با استفاده از یک کلید (key) در یک متد اجرایی دیگر، به کار برده ایم. حتما توجه داشته باشید که مقادیر (values) را در هنگام استفاده، به نوع متناسب تبدیل کرده ایم.
دیاگرام زیر نحوه کارکرد tempData را نشان داده است :

همانطور که در کد مثال عملی فوق مشاهده کردید، درخواست اول، اطلاعات test data را به TempData اضافه کرده ایم و همان اطلاعات را در درخواست بعدی، در ؟؟؟؟؟ کرده و استفاده نموده ایم. اما توجه داشته باشید که در درخواست سوم، دیگر امکان استفاده از TempData وجود ندارد. زیرا با اتمام درخواست دوم، اطلاعات tempData پاک می شوند. با استفاده از متد ()tempdataKeep، می توان اطلاعات را نگهداری کرده و در درخواست های بعدی نیز به کار برد.
public class HomeController : Controller { // GET: Student public HomeController() { } public ActionResult Index() { TempData["myData"] = "Test data"; return View(); } public ActionResult About() { string data; if(TempData["myData"] != null) data = TempData["myData"] as string; TempData.Keep(); return View(); } public ActionResult Contact() { string data; if(TempData["myData"] != null) data = TempData["myData"] as string; return View(); } }
Tempdata به صورت داخلی از شی Session برای نگهداری اطلاعات استفاده می کند. بنابراین، جهت نگهداری اطلاعات Tempdata، برنامه آن را رمزنگاری می کند و به این ترتیب می توانید حالت برنامه را از session پیش فرض به حالت های state server Mode و یا SQL Server mode انتقال دهید.
نکاتی که بایستی به خاطر داشته باشید :
- از TempData می توان برای نگهداری اطلاعات (data) بین دو یا چند درخواست، استفاده نمود. مقادیر tempData در رفت و برگشت درخواست ها، باقی می ماند.
- tempData از نوع داده ای TempDataDictionary است.
- tempdata به صورت داخلی از Session، برای نگهداری اطلاعا ت استفاده می کند. بنابراین می توان آن را یک Sission موقت در نظر گرفت.
- مقادیر TempData بایستی قبل از استفاده به نوع داده ای متناسب، تبدیل شوند. همچنین بایستی برای جلوگیری از بروز خطاهای Runtime، وجود مقدار null را در آن، چک نمود.
- از tempData فقط می توان برای نگهداری اطلاعات یک بار مصرف مثل پیام های خطا (error message) و یا پیام های اعتبارسنجی (validation messages استفاده نمود.
- از متد tempData.keep() می توان برای نگهداری کلیه مقادیر TempData در درخواست های بعدی، استفاده نمود.