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