zoukankan      html  css  js  c++  java
  • url重写以后保持postback地址

    让所有页面集成一下类即可实现url重写以后保持postback地址

    using System;
    using System.Web;
    using System.Web.UI;
    using System.IO;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Configuration;

    namespace BLL
    {
        /// <summary>
        /// PageBase 的摘要说明。
        /// </summary>
        public class PageBase : Page
        {
            private static object obj = new object();
            //// <summary>
            ///  重写默认的HtmlTextWriter方法,修改form标记中的value属性,使其值为重写的URL而不是真实URL。http://www.svnhost.cn/
            /// </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
        {
            public FormFixerHtml32TextWriter(TextWriter writer)
                : base(writer)
            {
            }

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


        public class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
        {
            public FormFixerHtmlTextWriter(TextWriter writer)
                : base(writer)
            {
            }

            public override void WriteAttribute(string name, string value, bool encode)
            {
                if (string.Compare(name, "action", true) == 0)
                {
                    value = HttpContext.Current.Request.RawUrl;
                }

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

  • 相关阅读:
    C语言复习---二维数组和二级指针的关系:没关系,别瞎想(重点)
    数据结构(二)栈与队列---回溯法之八皇后问题
    数据结构(二)栈与队列---递归之汉罗塔
    数据结构(二)栈与队列---栈的应用(递归和分治思想)
    数据结构(二)栈与队列---队列
    chmod 权限777 是什么意思(Unix和Linux的各种操作系统下)
    C#:基于WMI查询USB设备
    Eclipse中web项目部署至Tomcat步骤
    CSS设置DIV背景色渐变显示
    通过[蜘蛛协议]Robots.txt禁止搜索引擎收录的方法
  • 原文地址:https://www.cnblogs.com/SALIN/p/1641301.html
Copyright © 2011-2022 走看看