نقل قول نوشته شده توسط younesdoost مشاهده تاپیک
بله دوست خوبم.مطمئنا همینطوره.البته بستگی به اینکه شما می خواید چه کاری انجام بدید هم داره ها.اگه قرار باشه شما منوی خودتون رو بسازید که توابع استاتیک یا در سطح دوم استفاده از ViewBag یا در سطح آخر استفاده از ViewData جواب کار شما رو میده.اما حالا فرض کنید بخوایم یه ماتریسی بسازیم که تیتر سطراش اسم تولید کننده ها،تیتر ستوناش اسم مواد تولیدی و درایه هاش قیمتایی باشه که هر تولید کننده برای هر ماده میده.ساخت چنین چیزی هم ذاتا با کار ساخت منو یکیه ماهیتش اما با توابع استاتیک و ViewBag و ViewData محاله.یا اگه بشه 5 6 تا لازمه.اما این کار رو با یه ViewModel ساده میشه به راحتی انجام داد.این در حالیه که ساخت چنین ماتریسایی از کارهای نه چندان کوچیک برنامه نویسی به شمار میره.
میشه بگید که منظورتون از توابع استاتیک یا سطح دوم و سطح آخر چیه ؟
کار ViewBag, ViewData و TempData رد و بدل اطلاعات هست و همون ماتریسی که شما مثال زدید میشه با ViewBag یا ViewData به View منتقل کرد و نیازی به ٥ یا ٦ ViewBag یا ViewData نیست بلکه خود ماتریس میشه در ViewBag یا ViewData ذخیره کرد و به سمت View فرستاد و ظاهرا شما دلیل استفاده از ViewModel رو محدودیت در ارسال اطلاعات با ViewBag یا ViewData میدونید.
دلایل استفاده از ViewModel:
  • ارسال بیش از یک Model به View
  • اعتبار سنجی جداگانه ViewModel از Domain Model بر اساس آنچه در View لازم داریم
  • حذف logic از View و فرمت بندی داده
  • حذف ریسکهای امنیتی مانند مشکلی که در github به وجود اومد
  • حذف وابستگی مستقیم بین لایەها