توي ASP .net چيزي قبلا خيلي گيجم كرده بود فيلد مخفي اي بود كه به طور اتوماتيك به صفحه اضافه ميشه . مثلا:
<input type="hidden" name="__VIEWSTATE"
value="dDw1OTc3ODM2Mzk7Oz7gZLGwlPiYRFCcUazl/l7SgPHXMg==" />
تا اينكه ديروز كاملا متوجه شدم!
صفحه هاي ASP .net برپايه وب فرم ساخته شده اند كه شامل تعدادي كنترلهاي input مثل textbox ، checkbox ، Select و... است كه به طور طبيعي مقدارهايي را برميگردانند. علاوه بر اينها كنترلهايي وجود دارند كه هيچ مقداري را بر نميگردانند مثل Lable . ASP .net براي تشخيص دادن اطلاعات اين كنترلها فيلد مخفي __VIEWSTATE را ميسازد. طريقه كار به اين صورت است كه وقتي صفحه ساخته ميشود به كنترلهاي Lable مقاديري داده ميشود و صفحه براي كاربر ارسال ميشود. ASP .net براي اينكه بتواند اطلاعات اين كنترل ها را براي دفعه بعد بازيابي كند و State آنها را حفظ كند اطلاعات اين كنترلها را در فيلد مخفي __VIEWSTATE به صورت كد شده قرار ميدهد تا با پست شدن مجدد صفحه اين اطلاعات از اين طريق برگشت داده شود.
در يك سايت كه با ASP .net ساخته شده بود يه صفحه كه مطلب به نسبه بلندي داشت صفحه بيش از اندازه سنگين شده بود وقتي سورس صفحه رو ديدم متوجه شدم براي صفحه يه فيلد مخفي __VIEWSTATE بسيار طولاني ساخته شده. علت اين مشكل اين بود كه برنامه نويس View state آن ليبلي را كه متن در آن نمايش داده ميشه رو غير فعال نكرده بود و همين خاطر ASP .net اون رشته طولاني رو ساخته بود. بنابراين اگر لينبلهاي شما خيلي طولاني شد View State اون رو خاموش كنيد لطفا!