اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
در MVC راههای متفاوتی برای ارسال اطلاعات از controller به view و در redirectها وجود دارد. در این مقاله سعی شده تفاوتهای آنها به صورت مختصر نمایش داده شود. این مقاله در حقیقت یک ترجمه آزاد از این مقاله است که امیدوارم خوب ترجمه شده باشد.
ViewData:
- ViewData یک نوع دیکشنری ویژه است که از ViewDataDictionary ارث بری کرده است.
- برای ارسال اطلاعات از controller به view استفاده میشود.
- مدت زمان اعتبار مقادیر آن تنها در request جاری است.
- اگر redirect بین صفحات رخ دهد، مقدار آن null خواهد شد.
- به دلایل امنیتی باید قبل از استفاده، null بودن آن تست شود.
- برای بهره برداری باید cast صورت پذیرد.
ViewBag:
- یک نوع dynamic است (این نوع در c# 4 معرفی شده است).
- مانند ViewData برای ارسال اطلاعات از کنترلر به view استفاده میشود.
- مدت زمان اعتبار مقادیر آن تنها در request جاری است.
- اگر redirect بین صفحات رخ دهد، مقدار آن null خواهد شد.
- به دلایل امنیتی باید قبل از استفاده، null بودن آن تست شود.
- برای بهره برداری، cast نیاز نیست. بنابراین سریعتر عمل میکند.
TempData:
- نوع خاصی از دیکشنری است که از TempDataDictionary مشتق شده است.
- مدت عمر کوتاهی دارد و برای ارسال اطلاعات بین صفحات (در redirect) قابل استفاده است.
- وقتی viewها به صورت کامل اجرا شود، مقادیر آن null میشود.
- به دلایل امنیتی باید قبل از استفاده، null بودن آن تست شود.
- برای بهره برداری باید cast صورت پذیرد.
Session:
- برای ارسال اطلاعات بین requestهای مختلف مورد بهره برداری قرار میگیرد.
- مقادیر آن null نمیشود. تنها پس از گذشت زمان مشخصی (session expire) مقادیر آن null میشود.
- به دلایل امنیتی باید قبل از استفاده null بودن آن تست شود.
- برای بهره برداری، باید cast صورت پذیرد.