处理ASP.Net和Masterpages中的相对文件路径

时间:2008-11-12 13:41:31

标签: asp.net master-pages root filepath pathing

这可能是一个非常痛苦的问题,我将被嘲笑,但我很难在masterpages中使用文件路径。我相信这是因为如果子目录中的页面使用母版页,则文件路径不正确。

要解决此问题,我需要从root获取文件路径,但我似乎无法使其正常工作。

我试过了:

            <script type="text/javascript" src="~/jQueryScripts/jquery.js"></script> 

            <script type="text/javascript" src="../jQueryScripts/jquery.js"></script> 

两者都没有运气!

关于如何告诉它从root获取文件路径的任何想法?谢谢:))

5 个答案:

答案 0 :(得分:2)

我只是假设通过filepath,你实际上是指url(或uri,我忘了哪一个是部分的)。

没有〜,第一个例子应该有用。 <script type="text/javascript" src="/jQueryScripts/jquery.js"></script>会导致浏览器请求http://www.example.com/jQueryScripts/jquery.js(www.example.com是您的域名)。

答案 1 :(得分:2)

如果您正在运行支持AJAX的网站,请参阅我对Preferred way to include relative reference to JavaScript in VS 2008 nested Masterpage的回答。

答案 2 :(得分:1)

我认为您需要在runat=server的{​​{1}}标记中添加<head>才能使此网址重新定位。

MasterPage

答案 3 :(得分:1)

首先关闭前面的代字号是一个用于服务器控件的asp.net,不能用于基本的HTML。

如果不详细解释,您可以在前面使用斜杠(/),如果不是根网站,请包含网络应用名称。

或者您可以将代码放在主页面中以动态包含脚本,并让它处理路径。像:

    public void AddJavascript(string javascriptUrl)
    {   
        HtmlGenericControl script = new HtmlGenericControl("script");
        script.Attributes.Add("type", "text/javascript");
        javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
        script.Attributes.Add("src", ResolveUrl(javascriptUrl));
        Page.Header.Controls.Add(script);
    }

上面的代码还附加了程序集版本。我主要用它来开发,所以每当我构建时,我的javascript文件都会更新。

答案 4 :(得分:1)

您可以使用 Page.ResolveUrl 方法来解决此问题

例如:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>