URL Rewriter运用基页修改form的action属性

前不久做了一下
Rewriter二级域名和URL重写,结果发现好是好,但是,查看HTML源代码中,发现了FORM中的地址还是
<form name="aspnetForm" method="post" action="../aa/bb.aspx?cid=2" id="aspnetForm">
有什么办法让form action和重写的URL一样?

 

找了好一会,找到解决方案

 

 

public class BasePage:Page
    {
        protected override void Render(HtmlTextWriter writer)
        {
            writer = new FormFixer(writer);
            base.Render(writer);
        }

        internal class FormFixer : HtmlTextWriter
        {
            private bool _isInForm = false;

            public FormFixer(System.IO.TextWriter writer) : base(writer) { }

            public FormFixer(System.IO.TextWriter writer, string tagString) : base(writer, tagString) { }

            public override void WriteBeginTag(string tagName)
            {
                if (string.Compare(tagName, "form") != 0)
                    this._isInForm = true;
                base.WriteBeginTag(tagName);
            }

            public override void WriteAttribute(string name, string value, bool fEncode)
            {
                if (this._isInForm && name.Equals("action"))
                    value = HttpContext.Current.Request.RawUrl;
                base.WriteAttribute(name, value, fEncode);
            }
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rewriter.parallelExpandForRelNode(relAfterRBO, context)是Apache Calcite中的一个方法,它用于将一个经过规则优化后的关系代数表达式(RelNode)并行扩展为物理计划(PhysicalPlan)。 在关系型数据库中,查询优化的过程包括逻辑优化和物理优化两个阶段。逻辑优化阶段将SQL查询转换为关系代数表达式,然后使用一系列规则对表达式进行优化,以提高查询性能。物理优化阶段则将优化后的关系代数表达式转换为物理执行计划,即确定如何在数据库中实际执行查询。 在Apache Calcite中,Rewriter类负责对关系代数表达式进行规则优化。经过规则优化后,RelNode对象包含了一系列的规则节点,但是它们并没有被转换为实际的执行计划。此时,需要使用parallelExpandForRelNode方法将RelNode对象并行扩展为物理计划。 parallelExpandForRelNode方法接受两个参数:一个是经过规则优化后的RelNode对象,另一个是扩展上下文(Context)。它的主要作用是将RelNode对象转换为一个ParallelExecutor对象,该对象可以并行执行查询计划,并返回执行结果。 在转换过程中,parallelExpandForRelNode方法会根据RelNode对象中的节点类型,使用对应的RelVisitor对象进行转换。例如,如果RelNode节点表示一个排序操作,parallelExpandForRelNode方法会使用SortPhysRule类将其转换为一个排序物理操作(SortPhysical)。 总的来说,parallelExpandForRelNode方法是Apache Calcite中将关系代数表达式转换为物理计划的重要方法之一。它能够充分利用并行计算资源,提高查询性能,是分布式数据库系统中不可或缺的一环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值