شروع دوره پایتون از پنجشنبه 1 خرداد ، مقدماتی تا پیشرفته، بدون پیش نیاز شروع دوره پایتون از پنجشنبه 1 خرداد ، مقدماتی تا پیشرفته، بدون پیش نیاز
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

آموزش ViewBag در ASP.Net MVC

آموزش کار با ViewBag در ASP.Net MVC :

در درس های قبل آموختیم که از شی model object در MVC Razor View برای ارسال اطلاعات، استفاده می شود. اما در برخی از موارد و برنامه ها، می خواهیم مقدار کمی از اطلاعات موقت را به View ارسال نماییم. برای این منظور، ساختار کاری ASP.Net MVC از ViewBag استفاده می کند.
ViewBag زمانی کاربرد دارد که می خواهید اطلاعات غیر ضروری یا موقت (data temporary) از کنترلر به View ارسال کنید. View Bag یک نوع داده ای دینامیک متعلق به کلاس ControllerBase Class است که کلاس پایه تمامی کنترلرهاست.
دیاگرام زیر، نحوه کارکرد ViewBag در ASP.Net MVC را نشان داده است :

آموزش کار با  ViewBag در ASP.Net MVC

همانطور که دز تصویر زیر شنان داده شده است، برنامه خاصیت نام (Name property) را با استفاده از یک نقطه (.) به ViewBag در کنترلر متصل کرده و مقدار “Bill” را به آن نسبت داده است.
این خاصیت در View با استفاده از ساختار دستوری @ViewBag.Name قابل دسترس است. در ساختار دستوری razor از کاراکتر @، برای دسترسی به متغیر های سمت سرور استفاده می شود.
می توانید هر تعداد خاصیت (property) و مقدار (value) را به ViewBag نسبت دهید. اگر یک خاصیت با نام یکسان را چند بار به ViewBag نسبت دهید، فقط مقدار آخری نسبت داده شده را به عنوان مقدار در نظر می گیرد.

نکته1:

می تواند انواع متغیرهای معمولی مثل int، string و ... (متغیرهای primitive) و یا متغیرهای پیچیده (Complex) مثل آرایه را به عنوان مقدار، به viewBag نسبت دهید.

نکته2:

ViewBag فقط اطلاعات را از کنترلر به View انتقال می دهد و نه بر عکس. اگر برعکس آن رخ دهد، مقدار متغیرها null خواهند بود.

در کد مثال عملی زیر، نحوه ارسال data از کنترلر به View را توسط ViewBag نشان داده ایم :

namespace MVC_BasicTutorials.Controllers
{
    public class StudentController : Controller
    {
        IList<student> studentList = new List<student>() { 
                    new Student(){ StudentID=1, StudentName="Steve", Age = 21 },
                    new Student(){ StudentID=2, StudentName="Bill", Age = 25 },
                    new Student(){ StudentID=3, StudentName="Ram", Age = 20 },
                    new Student(){ StudentID=4, StudentName="Ron", Age = 31 },
                    new Student(){ StudentID=5, StudentName="Rob", Age = 19 }
                };
        // GET: Student
        public ActionResult Index()
        {
            ViewBag.TotalStudents = studentList.Count();
            return View();
        }
    }
}

در کد مثال فوق، قصد داریم تا تعداد کل students را در View نمایش دهیم. بنابراین خاصیت TotalStudents را برای ViewBag تعریف کرده و با استفاده از متد Studentlist.Count()، تعداد دانش آموزان را شمرده و در متغیر ریخته ایم.
پس می توانید در فایل نما index.cshtml View، با استفاده از خاصیت ViewBag.totalStudents به تعداد دانش آموزان دسترسی داشته و طیق کد زیر، آن را در خروجی نشان دهید :

<label>Total Students:</label>  
@ViewBag.TotalStudents

خروجی مثال فوق به صورت Total Students :5 خواهد بود.
ViewBag، در هنگام عملیات دریافت اطلاعات از آن، نیازی به انجام عمل تبدیل متغیرها (typecasting) ندارد.
از نگاه دیگر، ViewBag همانند یک بسته بندی برای ViewData است. بنابراین، اگر نام خاصیت ViewBag با نام کلید ViewData Key، یکسان باشد، یک خطای runtime رخ می دهد.

نکاتی که بایستی به خاطر بسپارید :
  1. ViewBag، اطلاعات را از کنترلر به View ارسال می کند. معمولا اطلاعات موقتی که درون model قرار ندارند.
  2. ViewBag یک متغیر دینامیکی است که از قابلیت های جدید dynamic در C#4.0 پشتیبانی می کند.
  3. می توانید به هر تعداد دلخواه خاصیت و مقدار به ViewBag، نسبت دهید.
  4. چرخه حیات ViewBag فقط در طی درخواست جاری http فعال است. اگر درخواست برعکس شده و یا تغییر کند، مقادیر ViewBag، خالی یا null می شوند.
  5. ViewBag همانند یک بسته بندی به دور ViewData عمل می کند.

در درس بعدی به آموزش ViewData در ASP.Net MVC خواهیم پرداخت.

1396/03/19 4358 1168
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...