zoukankan      html  css  js  c++  java
  • Url重写时碰到的问题.及我的解决

    url重写的环境.
    在使用控件的时候时候发现.当鼠标移过去的时候就出现了脚本错误.调试.一下子就发现了. .
    WebResource.axd 原来是这个也是被重写处理了.结果位置不对.造成JS不能加载进来.

    解决完了后.发现当鼠标移到菜单上的时候.发现了.

    xxx.dddd.com/test.aspx 访问时

    Menu路径变了.原本是 default.aspx 现在变成了 a.dddd.com/xxx/default.aspx   多了一个xxx
    是我跟据域名条件重写的路径.

    解决的话是把原来的 default.aspx 变成 ~/default.aspx 这样在url重写的路径访问是正常的但是

    http://www.dddd.com/xxx/test.aspx 访问时 路径又不对了变成了 http://www.dddd.com/default.aspx 变成了这个.原本应该是 http://www.ddd.com/xxx/default.aspx

    原因是控件本身对哪个跳转地址进行了处理.如果可以取消它的处理哪么就可以OK了.(待续)
    还好自己没有必要用http://www.ddd.com/xxx/test.aspx 访问

    下面这个是解决 form 提交的问题(代码网上抄的)

    public class TemplateBasePage : Page
    {
        
    public TemplateBasePage()
        
    {

        }

        
    /**/
        
    /// <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);
        }

        


       }

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

        
    internal 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);
        }

    }

    internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
    {
        
    private string _url;
        
    internal 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);
        }

    }
  • 相关阅读:
    Spring注解运行时抛出null
    关于apache服务器加载so的报错
    apache apr的编译和引用
    FreeSWITCH在会议室中持续播放音频文件
    64位FreeSWITCH编译安装(版本1.4.20)
    Spring整合Tiles
    eclipse启动报错eclipse failed to create the java virutal machine
    菜鸟新闻2--设置沉浸式状态栏的三种方法
    OkHttp3源码详解(三) 拦截器
    Android N(API level 24.)废弃了Html.fromHtml(String)
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/628196.html
Copyright © 2011-2022 走看看