PDA

View Full Version : View Model



iman mohadesi
چهارشنبه 27 آذر 1392, 12:27 عصر
آیا نیاز که تمامی ویو ها مدل مورد نیازشون رو از ویو مدل بگیرند یا اینکه فقط ویو هایی که درای فرم هستند؟

alireza.tabesh
پنج شنبه 28 آذر 1392, 08:40 صبح
شما وقتی قصد دارید با submit کردن فرم کاری روی مدل انجام بدید یا تغییری در دیتابیس بدید پس حتماً باید یک مدل داشته باشید اما الزامی نیست که برای همه ویوها یک مدل باشه و این میتونه سلیقه برنامه نویس باشه که الان در این ویو از مدل استفاده کنه یا نه . شخص من ترجیح میدم فرم هایی که نیازی کنترل کردن ندارند رو هم با مدل انجام بدم ( منظورم از کنترل کردن اینکه ValidationSammary ) البته حتی این کار هم در ویو بدون استفاده از مدل به راحتی انجام میشه . ولی کار کردن با مدل ها نظم بیشتری به برنامه شما میده و لایه بندی ام وی سی رو رعایت کردید .

iman mohadesi
پنج شنبه 28 آذر 1392, 11:53 صبح
مرسی از پاسختون
فکر کنم سوالم رو بد گفتم .
توی بحث ViewModel ، هدف این است که Propertyهای اضافه ایی که View به اون احتیاج نداره پاس داده نشه تا از لحاظ امنیتی یه هکر خوش سیما از اون ها سو استفاده نکنه و حسابی حال مون رو بگیره.
آیا باید تمامی Viewها مدل مورد نیازشان را باید از ViewModel بگیرند یا اینکه فقط اون هایی که شامل فرم هستند؟

gama_slv
پنج شنبه 28 آذر 1392, 19:17 عصر
View Model برای امنیت نیست.
در هر View فقط میشه از یک Model استفاده کرده. اگر بخواهیم از چند مدل با هم استفاده کنیم باید از View Model استفاده کنیم.
View Model اطلاعاتش رو از Model میگیره . و هر وردی که در View Model تعریف بشه فقط جنبه نمایش دیتا داره و قابلیت ویرایش اطلاعات بر روی Model ندارد.
البته نباید مفهوم view model رو با Partial view اشتباه گرفت. Partial view خودش میتونه از view model استفاده کنه.
در Partial view میشه مدل رو ویرایش کرد ولی view modelخیلی شبیه view در sql و فقط برای نمایش اطلاعات بکار میره. در view model از فیلد های مهم برای نمایش و اجرا query یا ساخت list مورد نیاز استفاده میشه این موضوع فقط برای راحتی بیشتر در کد نویسی نه برای امنیت.

younesdoost
جمعه 29 آذر 1392, 12:36 عصر
ViewModel ها هم برای امنیت هستند هم برای نمایش ویوهای شخصی سازی شده.
من 2 جا ازشون استفاده می کنم.
یکی وقتی که metadata هاش به دردم بخورن.برای validation یا displayname یا ورودی html یا از این دست چیزا.
یکیم وقتی که بخوام ویویی رو نمایش بدم که مثلا ترکیبی از چند تا مدله(یا یه ویوی خاص).