我正在开发一个包含/ Javascript文件夹中所有javascript文件的C#/ ASP.NET项目。如果我使用以下语法引用JS文件:src =“/ Javascript / jsfile.js”,那么如果将项目部署到URL的根目录,则会正确获取该文件。
但是,如果将此“网站”部署到主网址的子文件夹,则无法使用。所以解决方案可能是使用相对URL - 但是也存在问题,因为母版页引用了许多javascript文件,这些母版页可以被根页面和子文件夹中的页面使用很多层次。
有人有解决这个问题的想法吗?
答案 0 :(得分:11)
如果您在“runat = server”部分引用JS文件,则可以编写src =“〜/ Javascript / jsfile.js”,它将始终有效。
您也可以在Page_Load(在您的母版页中)执行此操作:
Page.ClientScript.RegisterClientScriptInclude("myJsFile", Page.ResolveClientUrl("~/Javascript/jsfile.js"))
答案 1 :(得分:4)
在母版页中尝试这样的事情:
<script type="text/javascript" src="<%= Response.ApplyAppPathModifier("~/javascript/globaljs.aspx") %>"></script>
无论出于何种原因,我发现浏览器对最终标签非常挑剔,所以只需用/&gt;结束标签即可。似乎不起作用。
答案 2 :(得分:4)
全新版本的ASP.NET(3.5 SP1)有一个名为CompositeScript的漂亮功能。这允许您使用ScriptManager来引用服务器端的许多小的.js文件,并将它们作为单个.js文件提供给客户端。
对客户有好处,因为它只需要下载一个文件。对你有好处,因为你可以在服务器端维护你想要的文件。
<asp:ScriptManager ID="ScriptManager1"
EnablePartialRendering="True"
runat="server">
<Scripts>
<asp:ScriptReference
Assembly="SampleControl"
Name="SampleControl.UpdatePanelAnimation.js" />
</Scripts>
</asp:ScriptManager>
答案 3 :(得分:0)
@Jared:IE需要/脚本。 FF不在乎。
答案 4 :(得分:0)
您可能需要查看FileResolver。它是一个HTTP处理程序,允许您执行此操作:
<link rel="stylesheet" href="~/resources/stylesheet.css.ashx" />
并且正确扩展了波浪号(以及文件中的任何波浪号)。