zoukankan      html  css  js  c++  java
  • 解决母版页和自定义控件中的路径问题

    如果你在网站中使用了母版页或自定义web控件,那么你一样遇见过这样的问题,如果引用母版页的页面和母版页不在同一级目录下,那些非服务器控件中的路径就会发生混乱。关于这个问题,我在网上查了下:

    有的人这样解决

    <script src='<%= Page.ResolveClientUrl("~/scripts/jquery-1.4.1.js") %>'type="text/javascript"></script>

    不过这样做也有不好之处就是这样无法在后台的代码中动态为<header>添加东西,编译器会报错,解决办法是在<header>中放入一个literal控件,在后台代码里重新拼字符串赋给literal;另外每个路径都要如此修改一番,麻烦!

    还有人这样做:

    protected override void Render(HtmlTextWriter writer)
    {
            StringWriter stringWriter = new StringWriter();
            HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
            base.Render(htmlWriter);
            string html = stringWriter.ToString();
    
    
            #region 转换相对路径
            MatchCollection collection = Regex.Matches(html, "<(a|link|img|script|input|form).[^>]*(href|src|action)=(\\\"|'|)(.[^\\\"']*)(\\\"|'|)[^>]*>", RegexOptions.IgnoreCase);
    
            foreach (Match match in collection)
            {
                if (match.Groups[match.Groups.Count - 2].Value.IndexOf("~") != -1)
                {
                    string url = this.Page.ResolveUrl(match.Groups[match.Groups.Count - 2].Value);
                    html = html.Replace(match.Groups[match.Groups.Count - 2].Value, url);
                }
            }
            #endregion
            writer.Write(html); 
    }

    个人更喜欢第二种做法。因为本人比较懒!

  • 相关阅读:
    POJ1087 A Plug for UNIX 网络流
    HDU4405 Aeroplane chess 期望DP
    POJ1062 昂贵的聘礼 区间枚举
    HDU4403 A very hard Aoshu problem 枚举
    HDU4407 Sum 容斥定理
    POJ2750 Potted Flower 线段树+DP
    软件项目开发流程以及人员职责
    10款最流行的开源Web设计工具
    C# 把\\r\\n替换为\r\n
    jquery validation 用到的输入验证正则表达式
  • 原文地址:https://www.cnblogs.com/jameszh/p/2852982.html
Copyright © 2011-2022 走看看