目前正在做的四川移动项目中遇到了一个小小的问题母版页引用的脚本的相对路径该怎么写 起因对于这个相对路径是对于母版页还是对于内容页答案是内容页(母版页只是替换内容页)这样就遇到了一个问题:当内容页和母版页不在同一个目录下的时候并且内容页也分别放在不同的文件夹下的时候不同的内容页对于脚本引用的相对路径就有所不同 提出问题关于母版页MasterPage中引用JavaScriptCSS的问题如果所有套用模板的页面都在同一个路径下这个问题就不存在了但是在实际中为了方面管理往往会建立一些文件夹将引用的MasterPage放到不同的文件夹下这是在MasterPage引用的JSCSS文件由于路径的问题在套用母版页中的内容页面中不一定都能访问到那这个问题该如何解决了 解决问题通过自己的努力思考和网上的参考资料得到一些解决办法 方法一 string JSFile = 〈script language=\javascript\ src=\{}\ type=\text/javascript\>〈/script>; ResponseWrite(stringFormat(JSFileResolveUrl(~/Javascript/jqueryjs))); 这个方法虽然可以快速解决问题但是ResponseWrite是将脚本的引用写到了Html页面的开头这就破坏了XHTML的格式会带来各种存在的隐患据资料用 AJAX开发发现很多 AJaxControlToolkit中很多控件不起作用了后来发现说是由于ResponseWrite引起的结果 方法二 string JSFile = 〈script language=\javascript\ src=\{}\ type=\text/javascript\>〈/script>; PageHeaderInnerHtml = stringFormat(JSFileResolveUrl(~/Javascript/jqueryjs)) 这种方法就可以实现而且可以很好的解决方法中的问题 方法三 HtmlLink link = new HtmlLink(); linkHref = stringFormat(JSFileResolveUrl(~/CSS/basecss)); linkAttributes[rel] = stylesheet; linkAttributes[type] = text/css; pageHeaderControlsAdd(link); 这是注册样式的一种方法 方法四注册客户端脚本的方法结合ASPNET AJAX 中的ScriptManager控件来实现 用ScriptManager这是 AjaxConrolToolkit的一个控件通过这个控件爱你可以很好的动态的根据所引用母版页的脚本路径自动的把母版页中引用的相对于母版页中的路径转换成相对于所引用内容页的相对路径 用法如下 前提条件装了环境中的组件才能用〈asp:ScriptManager>还用注意一点这个控件还需要给程序指定一个资源的脚本文件是在SystemwebExtensions中的所以需要 |