مونا سليقه : وب مهراز - جامعه برنامه نویسان

آموزش ASP.NET MVC برای مبتدیان-جلسه چهارم ViewData و ViewBag در MVC

همانطور که در جلسه قبل خدمت شما عرض کردم در این جلسه به بررسی ViewData و ViewBag در MVC میپردازیم.

قسمت های قبلی آموزش ASP.NET MVC :

آموزش ASP.NET MVC برای مبتدیان-جلسه اول

آموزش ASP.NET MVC برای مبتدیان-جلسه دوم

آموزش ASP.NET MVC برای مبتدیان-جلسه سوم

ابتدا باید بدونید که هردو شی (ViewData و ViewBag) برای ارسال اطلاعات از کنترلر به ویو استفاده میشوند.اگر به خاطر داشته باشید در قسمت قبل ما از شی ViewBag استفاده کردیم تا لیست کشورها رو به ویو ارسال کنیم، دقت کنید که این شی (ViewBag) به ما اجازه میداد که پراپرتی داینامیک داشته باشیم (در مثال جلسه گذشته این پراپرتی رو Countries نامگذازی کردیم) یعنی شما هر نامی میتوانید برای این پراپرتی انتخاب کنید و در زمان کامپایل شدن هیچ پیام خطایی دریافت نمیکنید و اگر غلط املایی داشته باشید (به عنوان مثال در مثال جلسه گذشته در کنترلر نام CountriesList را میدادیم و در ویو نام Countries میدادیم زمان بیلد کردن پروژه خطایی نمیدیدیم و تنها در زمان اجرا خطای نال یا خالی بودن شی را دریافت میکردیم) در زمان اجرا پیغام خطایی مبنی بر خالی بودن آن پراپرتی برای ما نمایان میشود.

همچنین به طریقه ی معرفی این شی دقت کنید به این صورت است که ابتدا شی و سپس نام پراپرتی قرار داده میشود : ViewBag.Countries .

در ViewData طریقه ی معرفی به چیزی شبیه به Session در WebForms است :



ViewData["Countires"]

در ViewData پراپرتی نداریم و با یک String Key شناسایی میشود.با ViewData هم مثل ViewBag میتوانیم اطلاعاتی را از کنترلر به View ارسال کنیم.

در مثال قبل میتوانیم بجای استفاده از ViewBag از ViewData استفاده کنیم به صورت زیر :



public ActionResult Index()
        {
            ViewData["Countries"] = new List<string>()
            {
                "Iran",
                "US",
                "UK",
                "Canada"
            };
            return View();
        }
و در View مورد نظر هم تغییرات زیر رو میدیم:


@{
    ViewBag.Title = "Countries List";
}

<h2>Countires List</h2>

<ul>
    @foreach (string strCountry in (List<string>)ViewData["Countries"])
    {
        <li>@strCountry</li>
    }
</ul>

دقت کنید در این شی شما هر چیزی میتوانید قرار دهید، در اینجا ما لیستی از رشته ها رو داخل این شی قرار دادیم پس منتظر یک لیست از رشته ها هستیم.

حالا اگر برنامه رو اجرا کنید خواهید دید که همان نتیجه برای ما نمایش داده میشود.

هردو شی یعنی ViewData و ViewBag در MVC خطایی زمان کامپایل شدن نمایش نمیدهند و در زمان اجرا اگر خطایی مثل اشتباهات تایپی داشته باشید نمایش داده میشود و این ضریب خطای برنامه رو بالاتر میبره و به همین دلیل زمانی که میخواهیم اطلاعاتی رو از کنترلر به ویو ارسال کنیم بهتر است از Strongly typed view model استفاده کنیم که در جلسات آینده درباره این حالت بیشتر بحث خواهیم کرد.

پس از ViewData و ViewBag در MVC برای پروژه ها استفاده نمیکنیم و تنها برای تست از ViewData و ViewBag در MVC استفاده میکنیم.


تعداد بازدید : 982
ارسال به دوستان

ارسال