一直没去研究,终于受不了,找个解答:

  模版页中难免要引用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);
 
        }
 
    }

转载于:https://www.cnblogs.com/amboyna/archive/2007/10/20/931198.html

ASP.NET 2.0中母版页中引用文件路径的问题(收集)相关推荐

  1. ASP.NET 2.0 正式版中无刷新页面的开发

    ASP.NET 2.0 正式版中无刷新页面的开发 在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动.而且在越来越多的 Ajax 开发包被开发出来的情况下, AS ...

  2. oracle 存取图片,用ASP.NET 2.0在Oracle中存取图片(文件)的操作

    用ASP.NET 2.0在Oracle中存取图片(文件)的操作 2010-10-21文字大小:大中小 有时由于某种须要(如安全性)须将图片或文件存放在数据库中,当然通常情况下特别是文件比较大的时刻许多 ...

  3. ASP.NET 2.0 正式版中无刷新页面(客户端回调)的开发

    在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动.而且在越来越多的 Ajax 开发包被开发出来的情况下, ASP.NET2.0 自带的无刷新页面技术没有被很多人 ...

  4. Tips/Tricks#0:母版页中对控件ID的处理

    注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章. 本篇技巧和诀窍记录的是:母版页中对控件ID的处理. 一.问题提出 由于总体排版和设计的需要,我们往往创建母版页来实现整个网站的统一性,最近我 ...

  5. 你没有权限在此位置中保持文件 java_Java路径问题解决方案收集

    1, TestURL().class.getResource("").getPath()或TestURL().class.getResource("").get ...

  6. 发现asp.net 2.0 在MSDN中的多个BUG 关于无刷新窗体的

    asp.net实现无刷新窗体的关键接口是ICallbackEventHandler,在MSDN对无刷新窗体的c#示例代码中存在了多个明显的错误. 原MSDN示例地址:ms-help://MS.MSDN ...

  7. 在 ASP.NET 2.0 中上载文件 —— 解决文件大小限制

    可以使用该技术上载的文件的大小存在限制.默认情况下,使用 FileUpload 控件上载到服务器的文件最大为4MB左右.不能上载超过该限制的任何内容. 然而,关于 .NET 的重要一点是,它通常会提供 ...

  8. ASP.NET 2.0中使用自定义provider (2)

    ASP.NET 2.0中使用自定义provider (2) 在tech ed 2005上,有对asp.net 2.0的介绍,其中讲到asp.net 2.0提供了很多功能,让程序员做少很多东西,这引起了 ...

  9. ASP.NET AJAX 在Web开发中的应用

    摘 要 ASP.NET AJAX 实现了Web页面丰富的部分刷新效果.本文通过介绍AJAX原理,引申到ASP.NET AJAX原理,并总结了在Web 开发应用中要注意的若干问题.合理地利用ASP.NE ...

最新文章

  1. 链表问题12——将单链表的每K个节点之间逆序
  2. Nature:采用甘露糖苷选择性抑制尿路致病性大肠杆菌
  3. iOS 9 学习系列:UIStack View
  4. 查看imooc服务器文件
  5. select case when if 的一些用法
  6. leetcode 476. Number Complement | 476. 数字的补数(位运算)
  7. 前端学习(1782):前端调试之canvas简介
  8. 运筹优化(十七)--存储论基础及其最优化求解
  9. 2014-04-08 创新点整理
  10. 惠普打印机换硒鼓(墨盒)
  11. MySQL下载步骤详解
  12. git error Missing tree 解决办法
  13. 【转】SPARC处理器30年沉浮
  14. ZeroDivisionError: integer division or modulo by zero
  15. web前端关于浏览器兼容性
  16. JAVA实现打字小游戏
  17. 知道邻边和斜边求角度_知道一个角度和一条对边怎样求斜边和邻边
  18. MapReduce分布式计算和编程原理总结
  19. 人过五十再有精力,也不要招惹这3个“荒唐事”,余生越混越差
  20. 自然语言处理(基于预训练模型)01FMM分词算法

热门文章

  1. 图合成与差分隐私(图结构和节点属性)论文笔记
  2. 基于人机交互设备测量用户情绪。
  3. 斜齿轮受力计算:理论计算virtual.lab motion 仿真
  4. 较好的个人网址(关于编程)
  5. 布尔(bool)全排列
  6. 嵌入式linux 零基础-实践起步 --- 001 --- linux的版本
  7. python特征工程意义_python数据挖掘--特征工程篇(附代码)
  8. php上js实现ajax请求,原生JS如何实现Ajax通过POST方式与PHP进行交互的方法
  9. html pdf文档的格式控制符,关于Unicode控制字符RLO,LRO,PDF 的坑
  10. 挑选出tensor中等于0的索引_Pytorch中的5个非常有用的张量操作