PDA

View Full Version : چه زمانی بهتر است ViewState را غیرفعال کنم؟



maktab
جمعه 30 دی 1390, 14:55 عصر
سلام
میخوام ببینم در چه مواردی بهتره از ViewState یک کنترل استفاده نکنیم؟ مثلا یه سایت داشته باشیم که امکانات زیر را داشته باشه:
منو
آخرین اخبار
بیشترین اخبار بازدید شده
لینک ها
آمار
اخبار
و...
همه اینها کنترل هایی هستن که از بانک خونده میشن ولی باید ViewState همه را داشته باشم اگر فعال نباشه باید هر بار که postback میشه دوباره اون ها را از بانک بخونم. حالا برام سوال پیش آمده که برای چه زمانی بهتره ViewState را غیرفعال کنم؟

dorparasti
جمعه 30 دی 1390, 16:11 عصر
فک نکنم viewstate ارتباطی با اتصال با دیتابیس داشته باشه .
بلکه view state برای حفظ تغییراتی است که کنترل ها در رفت و برگشت از سرور داشته اند .
مثلا یک label که متن اون توسط ورودی کاربر تغییر می کنه . اگر viewstate براش فعال نباشه بعد از postback صفحه می بینید که متن ورودی کاربر پریده و برگشته به همون مقدار پیش فرض قبلیش .
من به شخصه برای صفحاتی که تعاملی با کاربر ندارند و فقط به صورت ارائه مطلب هستند viewstate رو غیرفعال می کنم . مثل خبر اما یک نظرسنجی باید viewstate داشته باشه .

اینجا (http://msdn.microsoft.com/en-us/library/ms972976.aspx) رو هم یه بررسی کن .

maktab
جمعه 30 دی 1390, 19:15 عصر
من به شخصه برای صفحاتی که تعاملی با کاربر ندارند و فقط به صورت ارائه مطلب هستند viewstate رو غیرفعال می کنم . مثل خبر


خب شما همین خبر را در نظر بگیرید. ما یه کنترل میزاریم که این اخبار را نشون بده بعد در لود فرم مینویسم اگر post back صورت نگرفته باشه اطلاعات اخبار از بانک خونده بشه و به کنترل بایند بشه. حالا اگر طبق گفته شما viewstate را غیر فعال کنیم. اگر post back بشه اطلاعات کنترل از بین میره. برای رفع این مشکل یا باید هر بار صفحه لود میشه ما اطلاعات را از بانک بخونیم یا اینکه viewstate کنترل را فعال بزاریم.

dorparasti
جمعه 30 دی 1390, 19:47 عصر
درسته . اینجا (http://www.ironspeed.com/articles/Disable%20View%20State%20for%20a%20Page/Article.aspx) هم 3 شرط رو برای غیرفعال کردن viewstate یک صفحه تعیین کرده :

1- صفحه postback نداشته باشه .
2- مقداردهی مشخصات کنترلها به صورت دینامیک نباشه
3- یا مقداردهی مشخصات کنترل ها به صورت دینامیک در هر درخواست انجام بشه .

و برای یک کنترل هم
1- وقتی که هیچ رویدادی رو برای اون هندل نکرده باشید
2- مقداردهی مشخصاتش به صورت دستی و در زمان طراحی بوده باشد
3- مقداردهی مشخصاتش در هر درخواست باشد .

maktab
جمعه 30 دی 1390, 20:23 عصر
خب وقتی داریم از مستر پیج استفاده میکنیم خیلی از این امکانات را در مستر مینویسیم. مثلا آخرین اخبار، پربیننده ترین اخبار و... حالا نمیشه viewstate اینا را غیرفعال کرد چون ممکنه در یکی از صفحات post back داشته باشیم.
برای اینکه بشه در فقط در صفحاتی که post back داریم viewstate کنترل های بایند شده در مسترپیج فعال کرد چکار باید بکنم؟

در کل شما در نوشتن پروژه هاتون چگونه با viewstate رفتار میکنید. اگر میشه کامل توضیح بدید.