نقل قول نوشته شده توسط mo.esmp مشاهده تاپیک
اشکال که چه عرض کنم. به نظرتون اگه بیایم Controller رو نادیده بگیریم و مستقیما در View با EF کار کنیم کار درستی هست ؟ اینجوری که شما مثال زدین الگوی MVC شده MV.
نقل قول نوشته شده توسط younesdoost مشاهده تاپیک
می تونید خب توی کنترلر خودتون مقادیر رو داخل یه ViewBag بریزید و توی View از روی اون ViewBag حلقه رو بچرخید.
نقل قول نوشته شده توسط forestasphalt مشاهده تاپیک
مگه توصیه نشده که از view bag کمتر استفاده کنیم و به جاش از view model استفاده کنیم؟
با تشکر از مطلب خوبتون
نقل قول نوشته شده توسط younesdoost مشاهده تاپیک
بله دوست خوبم.مطمئنا همینطوره.البته بستگی به اینکه شما می خواید چه کاری انجام بدید هم داره ها.اگه قرار باشه شما منوی خودتون رو بسازید که توابع استاتیک یا در سطح دوم استفاده از ViewBag یا در سطح آخر استفاده از ViewData جواب کار شما رو میده.اما حالا فرض کنید بخوایم یه ماتریسی بسازیم که تیتر سطراش اسم تولید کننده ها،تیتر ستوناش اسم مواد تولیدی و درایه هاش قیمتایی باشه که هر تولید کننده برای هر ماده میده.ساخت چنین چیزی هم ذاتا با کار ساخت منو یکیه ماهیتش اما با توابع استاتیک و ViewBag و ViewData محاله.یا اگه بشه 5 6 تا لازمه.اما این کار رو با یه ViewModel ساده میشه به راحتی انجام داد.این در حالیه که ساخت چنین ماتریسایی از کارهای نه چندان کوچیک برنامه نویسی به شمار میره.
در این ٤تا پست بحث سر الگوها و مفاهیم موجود در MVC بوده. ایرادی که من به آقای کرامتی گرفتم این بود که در View مستقیما با EF کار نشه چون کار View فقط نمایش اطلاعات هست و اینکه بیاییم html رو با logic قاطی کنیم کار درستی نیست و در این بین Controller حذف نشه که جواب شما این بوده که در Controller اطلاعات رو با استفاده از ViewBag به View بفرستیم.
حالا بحث سر اینکه که چرا در این مورد نباید از ViewBag یا ViewData استفاده بشه و توضیحی که من هم دادم در همین راستا بوده و رعایت Best Practiceهای موجود در MVC بوده است.
اما در مورد مثالی که زده بودین که تویه UI پوشه به نام Component ساخته بشه که شامل کلاسهایی میشه که زیاد استفاده میشن، تا جایی که من میدونم معمولا توی Solution پروژەای به نام Commen یا Infrastructure ساخته میشه که شامل کلاسها و توابعی میشه که توی لایەهای دیگه هم استفاده میشن و نه اینکه مختص در داخل لایە UI باشه. درضمن چه اینکه از این کلاس استاتیک شما و چه اینکه بصورت مستقیم از DbContext در View استفاده بشه ارتباط بین اجزا بصورت Loose coupling نیست و این یک اشکال طراحیه البته هر چند شاید برنامەهای که شما نوشتین به احتمال زیاد بیشتر از یک لایه نبوده و چیزی هم از این مفاهیم نمیدونید (مسخره کردن کار سادەای هست و اینکه در پایان هرجمله یک قهقه بزنم و ٤تا نیش کنایه هم بزنم که کار شایستەای نیست اینجا یک انجمن برای تبادل اطلاعات هست و اگه فکر میکنید من یا بقیه بیسوادیم اشتباه فکر میکنید.)
نقل قول نوشته شده توسط younesdoost مشاهده تاپیک

دوست عزیز اول اینکه منظور من از سطح اول و دوم یه جور نمره دادنه که اولویت اول رو با توابع استاتیک می دونم و اولویت دوم رو با ViewBag و اولویت سوم رو با VewData نه چیز دیگه.
دوم اینکه بنده دلیل خاصی رو از استفاده از ViewModel ذکر نکردم.اگه به تاپیک دقت کنید می بینید که همه ی حرفای من بر اساس تاپیک و مطلبیه که دوستمون گفتن و کلی حرف نزدم.
سوم اینکه مشخصه که شما هرگز یه همچین ماتریسی نساختی که هیچ حتی بهش فکرم نکرده که در مورد راه ساختش اینطوری فکر می کنی. یا شایدم اصن متوجه ماتریس نشدی.
چهارم اینکه توابع استاتیک رو بالا تو مثال من می تونید ببینید.(شاید این رو باید اول می گفتم اما حوصله ی اصلاح مطلبم رو ندارم)
در آخرم هم از توضیحاتتون برای ViewModel تشکر می کنم گرچه جاش اینجا نبود.
در مورد ماتریس. یه جوری در مورد ماتریس حرف میزنید که انگار کرنل ویندوز نوشتین. یه سری هم به Tuple بزنید شاید این کار نچندان کوچیک رو براتون کوچیک کرد البته بدهم نیست یک بازنگری در مورد نحوه رابطه بین اجزاتون داشته باشین که مجبور نباشین برای ذخیره اطلاعات همچین موردی از ماتریس که کار نچندان کوچیکیه، استفاده کنین .