`
邪神Saber
  • 浏览: 41699 次
文章分类
社区版块
存档分类
最新评论

ASP.NET中母版页中引用文件路径的问题

 
阅读更多

模版页中难免要引用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了(BasePage要继承System.Web.UI.Page,各个子页面则需要继承BasePage就可以使用里面的变量和方法了)

代码如下(好像是从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); 
 
        } 
 
    } 

分享到:
评论

相关推荐

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    9-01.aspx 引用母版页。 MasterPage1.master 创建一个母版页。 9-01.aspx 调用母版页并进行交互。 FMasterPage.master 进行嵌套的父母版页。 SMasterPage.master 引用父母版页的子母版页。 9-03....

    引用母版页后在page页面修改母版页控件的值的方法

    2、在page页面通过设置页面指令@MasterType创建对该母版页的强类型引用,指定生成强类型的文件的虚拟路径例如: 代码如下:&lt;&#37;@ MasterType VirtualPath=”~/Demo.Master” %&gt;3、在母版页添加一个public的属性...

    第八章ASP网页模板与站点地图.ppt

    ASP.net 网页模板与站点地图 ...SiteMapPath 是 ASP.net 中的一种站点地图路径控件,用于显示网站的当前位置和导航路径。Menu 和 TreeView 是 ASP.net 中的两种常用的导航控件,用于显示网站的菜单和树形结构。

    基于ASP.NET的网页视频播放(内含数据库、图片及视频文件)

    用户功能:用户注册,用户登录,用户改密,个人中心,用户注销; 视频功能:支持视频资源浏览与播放,模糊... 后台管理员功能:用户及视频的增删改查。 视图界面采用css样式,图片参与排版,包含两个母版,十余个页面

    零基础学ASP.NET 2.0&源代码绝对完整版1

    9-01.aspx 引用母版页。 MasterPage1.master 创建一个母版页。 9-01.aspx 调用母版页并进行交互。 FMasterPage.master 进行嵌套的父母版页。 SMasterPage.master 引用父母版页的子母版页。 9-03.aspx 引用子母...

    ASP.NET编程之道.part1.rar

    陷阱24 母版页中使用img标签 陷阱25 页面缓存产生的陷阱 陷阱26 使用查询字符串在页面间传递参数 陷阱27 通用数据类型运算产生的陷阱 陷阱28 在模态窗口中下载文件 陷阱29 构造方法中调用虚方法的陷阱 陷阱30 使用值...

    物流管理系统 .Net源码

     在不同路径下的网页套用同一个母版页之后,为什么有的网页能正常显示图片,有的网页不能正常显示图片或者背景图片呢?解决办法:通过主题来设置背景图片,可以解决在不同路径下的网页的图片问题!

    asp.net2.0中css失效的解决方法

    1,CSS文件路径不正确这个问题属于Web开发中的基础问题,一般采用相对路径会出现这样的问题,或者样式文件写在了母版页里面,在内容页与母版页不在同一级目录下时会出现这样的问题。此时你要清楚Web中相对路径的规则...

    《零基础学ASP.NET 2.0》第11章 网站导航的设计

    11.1 创建站点地图文件 180 11.2 制作导航条 182 11.3 实现导航路径 182 ...11.5 在母版页中添加导航 185 11.6 常见问题 186 11.6.1 创建站点地图文件有没有专门的工具 186 11.6.2 SiteMapDataSource控件起什么作用 186

    DotNetTextBox所见即所得编辑器控件 v3.3.1

    3) 修正插入图片功能中引用外部网络地址会出现插入地址错误的BUG。 4) 修正控件在Opera浏览器使用中出现的一些BUG。 5) 修正了控件右键菜单判断选择状态不正确的BUG。 6) 优化了非IE浏览器下的脚本性能...

Global site tag (gtag.js) - Google Analytics