انتقال اطلاعات در ASP.NET MVC

ASP.NET MVC سه گزینه برای انتقال اطلاعات از controller به view   توصیه میکند که شامل : ViewBag,ViewData,TempData می باشد . در این مقاله به نحوه استفاده و معرفی هر کدام از این سه مورد خواهیم پرداخت .

در بخش اول این مقاله به ViewBag خواهیم پرداخت

viewBag:

 با استفاده از ViewBag می توانید اطلاعاتی را از Controller به یک view یی مشخص ارسال کنید . viewBag یک dynamic type می باشد این به این معناست که شما می توانید هر تعداد Property که مد نظر دارید ایجاد و مقداری را به آن نسبت دهید و در view مورد نظر این اطلاعات را بخوانید. برای استفاده از viewBag در view نیازی به Cast کردن آن نیست (در ادامه توضیح داده خواهد شد)

ViewBag

فرض کنید در اکشن Index مقدار تاریخ جاری را به view ارسال و در View آن را به کاربر نمایش دهیم . 

ابتدا یک Property دلخواه را به viewBag اضافه میکنیم با مقدار ساعت جاری . می توانید از هر اسم دلخواهی استفاده کنید :

public ActionResult Index()
        {
            ViewBag.CurrentDate = DateTime.Now;
            return View();
        }

و در view برای نمایش مقدار CurrentDate به صورت زیر عمل خواهیم کرد :

<span>Current Date :</span> @ViewBag.CurrentDate

قصد داریم عنوان view را هم توسط یک viewBag دریافت و نمایش دهیم برای اینکار در اکشن Index یک Property دلخواه دیگر به VideBag اضافه و عنوان مورد نظر را در آن قرار میدهیم .اکشن Index را به صورت زیر تغییر می دهیم :

public ActionResult Index()
        {
            ViewBag.CurrentDate = DateTime.Now;
            ViewBag.PageTitle = "ViewBag in ASP.NET MVC";
            return View();
        }

و در view :

<title>@ViewBag.Pagetitle</title>

نکاتی در مورد ViewBag :

- مدت اعتبار مقدار  هر viewBag فقط در درخواست جاری می باشد ، یعنی با رفتن به یک view دیگر مقدار موجود در viewBag  از بین می رود و در صورتی که بخواهید سعی بر استفاده از ViewBag داشته باشید مقدار null به دست می آورید .

- Intellisense  در اختیار ندارید .

- برای استفاده از مقادیر آن نیاز به cast کردن آن نیست . در توضیح viewData متوجه این موضوع خواهید شد .

viewBag کلا با viewState متفاوت می باشد . Viewstate در ASP.NET MVC کاملا حذف شده است .

- ViewBag  یک طرفه می باشد و  همیشه در کنترلر مقدار دهی می شود  به این معنا که شما هرگز نمی توانید در view مقداری را به آن نسبت دهید .دستور زیر مقدار رشته hozhan را با مقدار ViewBag به صورت یک رشته بهم پیوسته نمایش میدهد .

@ViewBag.CurrentDate="hozhan"

output :  11/2/2014 9:55:25 PM="osman"

لازم به ذکر است جدا از این سه روش view های strongly type و view های untyped هم وجود دارند که می توان از اطلاعاتی که در اکشن به view پاس داده می شود استفاده کرد .  


توسط : عثمان رحیمی  1115 روز قبل ، یکشنبه 11 آبان 1393 ساعت 22:43  1  2856

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط

نظرات خوانندگان

کاربر مهمان (مهری)  در تاریخ : 6 ماه قبل ، شنبه 25 اردیبهشت 1395 ساعت 00:00

بسیار عالی