يكي از روشهاي معمولي كه براي بدست آوردن اندازه ViewState يك صفحه در ASP.Net بكار ميرود، نمايش صفحه، مراجعه به سورس آن و سپس ذخيره مقدار فيلد مخفي ViewState به صورت يك فايل متني و مراجعه به اندازه آن فايل است!
راه بهتري هم وجود دارد كه به شرح زير است:
زمانيكه قرار است ViewState به صفحه اضافه شود، روال رخداد گردان SavePageStateToPersistenceMedium اجرا خواهد شد. نحوه تحريف آن براي بدست آوردن اندازه ViewState به صورت زير است (چند سطر زير را به وب فرم خود اضافه كنيد):
using System;
using System.Diagnostics;
using System.IO;
using System.Web.UI;
protected override void SavePageStateToPersistenceMedium(object state)
{
if (Debugger.IsAttached)
{
using (MemoryStream stream = new MemoryStream())
{
LosFormatter formatter = new LosFormatter();
formatter.Serialize(stream, state);
int size = stream.Capacity / 1024;
if (size > 32)
{
throw new Exception("لطفا به وضعيت ويوو استيت اين صفحه رسيدگي نمائيد");
}
}
}
base.SavePageStateToPersistenceMedium(state);
}
اگر علاقمند بوديد كه اين روال را به تمامي صفحات اضافه كنيد ميشود يك كلاس جديد ايجاد كرد و اين كلاس را از كلاس استاندارد Page به ارث برد ( براي نمونه public class MyPage : Page ) . سپس همان چند سطر فوق را به آن اضافه نمائيد.
اكنون تغييري كه در كدها بايد صورت گيرد به صورت زير است، براي مثال تبديل:
public partial class WebForm4 : System.Web.UI.Page
public partial class WebForm4 : MyPage