如题

解决方案 »

  1.   

    protected override void Render(System.Web.UI.HtmlTextWriter writer) {    System.IO.StringWriter stringWriter = new System.IO.StringWriter();    HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);    base.Render(htmlWriter);    string html = stringWriter.ToString();    int StartPoint = html.IndexOf("<input type=\"hidden\" name=\"__VIEWSTATE\"");    if (StartPoint >= 0)     {        int EndPoint = html.IndexOf("/>", StartPoint) + 2;        string viewstateInput = html.Substring(StartPoint, EndPoint - StartPoint);        html = html.Remove(StartPoint, EndPoint - StartPoint);        int FormEndStart = html.IndexOf("</form>") - 1;        if (FormEndStart >= 0)         {            html = html.Insert(FormEndStart, viewstateInput);        }    }    writer.Write(html);}
      

  2.   

    如果你真的想动它,你应该动 PageStatePersister 通过写上三四行代码将__ViewState保存在Session中而不输出到客户端,不要使用那种移动的做法。
      

  3.   

    protected override PageStatePersister PageStatePersister
    {
     get{ return new SessionPageStatePersister(Page); }
    }或者设计自己的PageStatePersister 类型,这其实很简单可靠,用不着画蛇添足去移动它。