2010-02-12 75 views
1

在Visual Studio中工作时有关路径的问题。在我的母版页中,我有一些加载CSS文件以及JavaScript文件的路径。Visual Studio和ASP.Net路径问题

我的第一个问题是,如果我使用相对路径,相对路径是否应该来自主页面文件的位置?例如,如果我将所有母版页文件保存在名为MasterPages的网站根目录下,我应该假设这是我的相对路径加载css文件的起点?如果该主页面用于包装一个aspx文件,树中的几个目录是硬编码的相对路径仍然有效?

第二个问题,有没有办法使用绝对路径,以便一切工作在我的本地机器以及当我将文件移动到webroot?例如我的本地机器上的应用程序路径可能是localhost/myappdir/default.aspx,但是当我将应用程序移动到服务器时,没有myappdir,并且default.aspx位于webroot中。我不想在将文件移动到服务器后更改文件中的路径。

目前我有..

SRC = “<%= VirtualPathUtility.ToAbsolute( ”〜/ lib中/ CSS/style.css文件“)%>”

但这样的Visual Studio找不到css文件更新intellence

+0

这个解决方案怎么了?内容占位符包装我的js包括.. JBeckton 2010-02-12 03:21:06

回答

0

通常,您应该始终使用服务器相关路径(如in,/images/stuff.gif)。使用相对路径(如../images/stuff.gif)会每一次都让你感到困扰,同样会试图依赖ASP.NET“Magic”,例如VirtualPathUtility.ToAbsolute和ResolveClientUrl。

有时候,在服务器上,你需要用tilda预先设置路径(如〜/ images/stuff。gif),以便它能正确导航ASP.NET要求您将所有项目建立在基础上的虚拟目录。

当然,这也意味着您需要将开箱设置为multisite,以便您可以请将您的根改为http://mysite.dev/之类的内容,并确保所有服务器相​​关路径正常工作。 (使用VS.NET内置服务器在技术上也可以解决这个问题,但是真的,你想使用那个东西吗?)

+0

我曾经为每个项目设置本地网站,但厌倦了诸如设置dns等额外工作。我只是来.Net和我在其他平台上工作这是一个没有问题。我可能会重新为每个项目建立一个新的iis网站。我在win7最终,所以我不认为我需要在这里的多个网站的DLL。 – JBeckton 2010-02-12 03:26:32

1

如果您使用相对路径到您的css/Javascript文件,那么他们将需要是相对于页面,而不是母版页。

This article做了解释,你在这种情况下,有选择的一个很不错的工作,并接近尾声,他们提出了一个很好的解决这一类型的问题,呈现脚本或链接标记为您和呼叫ResolveClientUrl用户控制使路径正确。

+0

这个控制看起来不错,但看起来像是在工程上。我可以给它一个旋转。 – JBeckton 2010-02-12 03:17:52

0

使用“〜”运算符来解析相对于根的所有内容。切勿使用相对路径。即使我不使用主题,我也可以使用它们的语法通过创建一个如下所示的文件夹结构来获得对我的CSS文件的简单语法访问:App_Themes/Style/stylesheet.css然后,在我的ASPX页面指令中添加Theme =“Style”和我的CSS文件将被自动解析 - 不完全是传统的,但非常有效的:-)

UPDATE:

要解决的JS,你可以使用下面的在你的母版页的代码隐藏:

string myScript = "js/footerFix.js"; 
Page.ClientScript.RegisterClientScriptInclude("myKey", myScript); 

使用IIS7,您无需更改任何内容即可获得“多站点”行为R等这是在烘焙例如,你可以有几个地点如下,没有任何单独的配置从创建虚拟目录,通过URL达到了一边:

本地主机/ PROJECT1
本地主机/项目2
本地主机/项目3

+0

我发现我的样式表路径得到更新,如果说我的内容页面是树中的几个文件夹,但是js文件的路径不是 – JBeckton 2010-02-12 02:56:08

+0

我想了解10年的ASP.NET体验,迄今为止,避免使用Page.ClientScript.RegisterClientScriptInclude。这是一个丑陋的黑客,忽略了HTML有一个很好的“