我们通常会这样引用脚本资源:
<head runat="server">
<script type="text/javascript" src="JS/script_include.js"></script>
</head>
<body>
</body>

</html>
当然可以把 <script type="text/javascript" src="JS/script_include.js"></script> 写到页面的任何位置,但是写在head中是非常标准的做法,这样写会有很多好处,比如“可见性”的问题。
好了现在我们有了MasterPage,这个非常好,我们只要在MasterPage里引用一些常用的脚本文件,就不用每个页面去写了。
如果还是像上面那样引用脚本文件:
MasterPage.master
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<script type="text/javascript" src="JS/script_include.js"></script>
</head>
<body>
<form id="form1" runat="server">

</form>
</body>
</html>
问题来了,如果在一个不同目录的页面中(比如:Admin/Default.aspx)使用上面这个MasterPage,
<script type="text/javascript" src="JS/script_include.js"></script>
这段会被原封不动的放到生成的页面中,很显然引用失败了。
我们知道有“~”这个东西非常好,很想用它,是不是可以这样写呢:
<script type="text/javascript" src="~/JS/script_include.js"></script>
当然不行,只有runat=server的control“~”,像上面这样写只会原封不动把~/JS/script_include.js输出到客户端。是不是要改成这样:
src="<%= Request.ApplicationPath %>/JS/script_include.js">
这样编译都通不过,看到上面那个<head runat="server"> 没?你还不能把哪个runat="server"去了,MasterPage、Theme全靠它。没办法只能从head里搬出来
</head>
<script type="text/javascript" src="<%= Request.ApplicationPath %>/JS/script_include.js"></script>
<body>
<form id="form1" runat="server">
.......
现在这样是能用了,但是有两个问题。首先,引用没有放在head里;其次,如果你把程序放在根目录下的话,就会变成//JS/script_include.js。That's too bad, and ugly.
Atlas 给我们提供了一种优雅的解决方法。We can use it like that:
<atlas:Script ID="Script1" runat="server" Path="~/JS/script_include.js" />
</head>
上面的那个atlas:Script 是runat=server的,所以可以放心的使用"~",而且引用也待在head里了。当然首先要把你的程序配置成可以使用Atlas,具体方法可以参考atlas.asp.net上的相关内容。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具
· C# 13 中的新增功能实操