Problem:
Annoying LONG viewstate

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEyMjcx
NDEzNzQPZBYCZg9kFgQCAQ9kFgICAg8VAh4vV29ybGRHcmFubnkvanMvZGRhY2NvcmRpb24u
anMkL1dvcmxkR3Jhbm55L2pzL2pxdWVyeS0xLjIuMi5wYWNrLmpzZAIDD2QWBAIDDxYCHgtfIUl0
ZW1Db3VudAIKFhRmD2QWBAIBDw8WAh4LTmF2aWdhdGVVcmwFFH4vUGFnaW5hLzIvaG9tZS5h
c3B4ZBYCZg8VAQRIb21lZAIDDxYCHwACARYCAgEPZBYCAgEPDxYCHwEFFX4vUGFnaW5hLzQvc3V
iLTEuYXNweGQWAmYPFQEFc3ViIDFkAgEPZBYEAgEPDxYCHwEFG34vUGFnaW5hLzMvb3JnYW5pc2F0a
WUuYXNweGQWAmYPFQELT3JnYW5pc2F0aWVkAgMPFgIfAAICFgQCAQ9kFgICAQ8PFgIfAQUUfi9QYWdpb
mEvNS9zdWIyLmFzcHhkFgJmDxUBBHN1YjJkAgIPZBYCAgEPDxYCHwEFGH4vUGFnaW5hLzgvbmV3LXBhZ2" />

LOL.. long huh :D

Solution:
put this code in your .cs page

//overwrite the  SavePageStateToPersistenceMedium and LoadPageStateFromPersistenceMedium
protected override void SavePageStateToPersistenceMedium(object viewState)
    {

    }

    protected override object LoadPageStateFromPersistenceMedium()
    {

        return null;

    }


// Remove completely after rendering html code
 protected override void Render(HtmlTextWriter output)
    {

        System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();

        System.IO.StringWriter stringWriter = new System.IO.StringWriter(stringBuilder);

        HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);

        foreach (Control ctrl in this.Controls)

            ctrl.RenderControl(htmlWriter);

        String html = stringBuilder.Replace("/>", ">").ToString();

        int intViewStart = html.IndexOf("<input type=\"hidden\" name=\"__VIEWSTATE\"");

        int intViewFinish = html.IndexOf(">", intViewStart) + 1;

        string strViewTag = html.Substring(intViewStart, intViewFinish – intViewStart);

        System.Diagnostics.Debug.WriteLine(strViewTag);

        html = html.Replace(strViewTag, "");

        output.Write(html);

    }

and WALA! its gone!!