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#经典面试题及答案【20090210更新】
    难道SQL的子查询就是鸡肋吗?
    转:WCF基础知识问与答
    针对分析单点登录(流程图与数据安全)提出的问题及解决方案
    老生常谈:装饰者模式
    我对IDisposable接口的理解
    log4net日志组件经验分享
    老生常谈:工厂模式兄弟姐妹
    探讨高访问量网站优化方案(从图片角度)
  • 原文地址:https://www.cnblogs.com/SALIN/p/1641301.html
Copyright © 2011-2022 走看看