zoukankan      html  css  js  c++  java
  • 模版页中引用文件路径的问题

    模版页中难免要引用CSS、脚本、图片等,这些文件的路径如果简单的使用相对路径,那么如果引用模版的目录一发生变化,这些路径就会出错;如果使用绝对路径,又不够灵活,如果应用程序目录发生变化,可能会导致要大量修改。asp.net支持一种相对于应用程序的路径,以波浪线开头的,形如"~/",使用它即可解决,例如:
    <link rel="stylesheet" media="screen" type="text/css" href="<%=ResolveClientUrl("~/css/global.css") %>" />

    当然如果你觉得每个路径都要写成动态的不爽,而又正好有页面基类的话,倒是可以换一种方式:

    所有的路径直接书写为相对于应用程序目录的路径,形如:
    <link rel="stylesheet" media="screen" type="text/css" href="~/css/global.css" />
    当然默认HTML是不支持的这样的路径方式的,这时候就要借助PageBase了,代码如下(好像是从DNN的代码里面抠出来的):



        public abstract class PageBase : Page  
        {
            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);

            }

        }
  • 相关阅读:
    java 传入多个参数时报"Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1,..." 解决方案
    java 判断int类型为空
    scp 传输下载
    自己开发的网页在跳转至微信公众号文章后,点击微信的返回,无法返回原网页
    nginx下Thinkphp 隐藏index.php
    ubuntu常见错误–Could not get lock /var/lib/dpkg/lock解决
    apt-get update 和 upgrade 的区别
    php 取某一日期的前一天
    PHP 统计数组中所有的值出现的次数 array_count_values 函数
    pandas之表格样式
  • 原文地址:https://www.cnblogs.com/SoulStore/p/680707.html
Copyright © 2011-2022 走看看