PDA

View Full Version : سوال: مکانیزم MVC در صورت عدم وجود viewState



rahimi.mohamad24
شنبه 22 بهمن 1390, 08:37 صبح
سلام
معمولا اولین موردی که درباره ی برتری MVC نسبت به Web Form مطرح میشه ، عدم وجود ViewState هست.
سوالم اینه که اگر در MVC ،
ViewState نداریم،چطوری حالت قبلی صفحات حفظ می شود؟مثلا اگر یه گریدویو را بایند کرده باشیم،اگر کاربر یه سطر اضافه کنه به گرید،دوباره همه ی اطلاعات از اول بایند میشه؟
کلا مکانیزم عملکرد MVC در این موارد چگونه است؟

amir-yeketaz
شنبه 22 بهمن 1390, 11:10 صبح
ViewState نداریم،چطوری حالت قبلی صفحات حفظ می شود؟در mvc ما حالت قبلی صفحات نداریم بلکه حالت قبلی صفحه داریم! ... در mvc اطلاعات در قالب http get و http post قرار دارند ... برای مثال فرض کنید فرمی دارید تشکیل شده از چند فیلد و همین طور یه دکمه ی submit ... حال اگر دکمه ی submit را بزنیم چه خواهد شد؟! ... در این صورت اطلاعات صفحه به متدی که به اکشن متد معروف است فرستاده خواهد شد و شما فقط در این متد حق استفاده از اطلاعات را دارید و میتونید مثلا در این متد اطلاعات فرم را در دیتابیس و شی مربوطه را ذخیره کنید یا ... که در درخواست بعدی همه ی این اطلاعات حذف خواهد شد چون ViewState نداریم ... البته مفاهیمی مثل session در mvc وجود داره!


مثلا اگر یه گریدویو را بایند کرده باشیم،اگر کاربر یه سطر اضافه کنه به گرید،دوباره همه ی اطلاعات از اول بایند میشه؟همچین چیزی تو mvc وجود نداره! ... ما تو mvc کنترل های سمت سرور نداریم بلکه همه ی کنترل ها سمت کلاینت هستند و باید از دنیای کنترل های سمت کلاینت استفاده کرد مثه jquery ui و ... استفاده کرد و برای گرید ها هم کنترل های زیادی وجود داره مثه datatable یا jqgrid ... در جواب سوالتونم یه جورایی میشه گفت نه یه جوراییم میشه گفت آره! ... چون ما میتونیم اطلاعات قبلی را cache کنیم یا با یک درخواست تولید سطر جدید از طریق ajax و json یه سطر جدید (عنصر tr ) رو بگیریم و با jquery فقط تو صفحه نمایش بدیم ... چون مهمه اطلاعاتیه که تو db قرار داره! ... یا اینکه کل اطلاعات رو از اول نشون بدیم! ... خلاصه خیلی کارا میشه کرد :دی