处理ASP.Net和Masterpages中的相关文件路径
这可能是一个痛苦的简单问题,我将被嘲笑,但是我在使用masterpages中的文件路径时遇到困难。我相信这是因为如果一个子目录中的页面使用母版页,那么文件路径不正确。处理ASP.Net和Masterpages中的相关文件路径
要解决这个问题,我需要从根获得文件路径,但我似乎无法得到它的工作。
我想:
<script type="text/javascript" src="~/jQueryScripts/jquery.js"></script>
和
<script type="text/javascript" src="../jQueryScripts/jquery.js"></script>
没有运气要么!
有关如何告诉它从根获取文件路径的任何想法?谢谢:)
我只是假设通过filepath,你实际上意味着URL(或uri,我忘记哪一个是部分)。
没有〜,第一个例子应该工作。 <script type="text/javascript" src="/jQueryScripts/jquery.js"></script>
将导致浏览器请求http://www.example.com/jQueryScripts/jquery.js(其中www.example.com是您的域名)。
我相信你需要在的<head>
标记中有runat=server
这个URL重定位工作。
<head runat="server">
如果您运行的是支持AJAX的站点,请参阅我对Preferred way to include relative reference to JavaScript in VS 2008 nested Masterpage的回答。
干杯!做到了! – Damien 2008-11-12 15:08:18
首先,前面的波浪号是用于服务器控件的asp.net事物,不适用于基本的HTML。
在没有详细解释的情况下,您可以在前面使用斜杠(/),并且包含Web应用程序名称(如果它不是根站点)。
或者您可以将代码放入您的母版页中以动态包含脚本,并让它处理路径。像:
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文件都会更新。
您可以使用Page.ResolveUrl方法来解决这个问题
例如:
<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
呀,已经有了。没有运气:( – Damien 2008-11-12 14:45:00
那么,至少你对于被问到一个“痛苦简单”问题“嘲笑”的理解是没有根据的,结果是一个具有挑战性的问题,这是一个很好的问题。 – DOK 2008-11-12 15:09:07