url重写,删除数据后重新绑定gridview地址又变回真实的了

     /// <summary>
   
/// URL重写以后保持postback地址
   
/// </summary>
    public class PageBase : Page
    {
       
//// <summary>
       
///  重写默认的HtmlTextWriter方法,修改form标记中的value属性,使其值为重写的URL而不是真实URL。
       
/// </summary>
       
/// <param name="writer"></param>
        protected override void Render(HtmlTextWriter writer)
        {

           
if (writer is System.Web.UI.Html32TextWriter)
            {
                writer
= new FormFixerHtml32TextWriter(writer.InnerWriter);
            }
           
else
            {
                writer
= new FormFixerHtmlTextWriter(writer.InnerWriter);
            }

           
base.Render(writer);

        }
    }

   
public class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
    {
       
private string _url; // 假的URL

       
public FormFixerHtml32TextWriter(TextWriter writer)
            :
base(writer)
        {
            _url
= HttpContext.Current.Request.RawUrl;
        }

       
public override void WriteAttribute(string name, string value, bool encode)
        {
           
// 如果当前输出的属性为form标记的action属性,则将其值替换为重写后的虚假URL
            if (_url != null && string.Compare(name, "action", true) == 0)
            {
                value
= _url;
            }
           
base.WriteAttribute(name, value, encode);
        }
    }

   
public class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
    {
       
private string _url;
       
public FormFixerHtmlTextWriter(TextWriter writer)
            :
base(writer)
        {
            _url
= HttpContext.Current.Request.RawUrl;
        }

       
public override void WriteAttribute(string name, string value, bool encode)
        {
           
if (_url != null && string.Compare(name, "action", true) == 0)
            {
                value
= _url;
            }

           
base.WriteAttribute(name, value, encode);
        }
    }

posted @ 2009-12-18 15:20  陈同学  阅读(465)  评论(0)    收藏  举报