url重写网站,删除数据后重新绑定gridview地址又变回真实的了,怎么办页面源
<asp:Button ID="btnDel"  runat="server"  Text="删除" OnCommand="btnDel_Click" OnClientClick="if(confirm('确定删除?'))return true;else return false;" CommandName='<%# Eval("id")%>' />
 private void Bind()
    {
        GridView1.DataSource = bll.GetNews();
        GridView1.DataBind();
    }
 protected void btnDel_Click(object sender, CommandEventArgs e)
    {
        bll.Delete(Convert.ToInt32(e.CommandName));
        Bind();
    }
web.config<RewriterRule>
     <LookFor>~/newslist.html</LookFor>
     <SendTo>~/news.aspx</SendTo>
</RewriterRule>

解决方案 »

  1.   


        /// <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);
            }
        }页面继承PageBase类.