asp.net新手问题 - css href路径

时间:2011-04-11 14:10:50

标签: asp.net relative-path

当启动我的asp.net网站的调试模式时,它会在我的浏览器中使用url

进行渲染
http://localhost:111/mywebsite/Default.aspx

在html

中引用了css文件
<link href="~/css/style.css" runat="server" rel="stylesheet" type="text/css" />

网站自然会中断,因为它会在localhost:111/css/而非localhost:111/mywebsite/css /中查找CSS文件。

当我启动网站时,它实际上将从网址提供:

http://mywebsite.com

那么有没有办法在我的开发和制作区域中使用简单的前缀<?=$site_url ?>或其他东西正确引用我的样式表?

其他信息

在我的解决方案资源管理器中,我看到我的项目标有路径C:\...\mywebsite。这就是~假设我的项目总是在子目录中的原因吗?我如何告诉Visual Studios这个项目应该总是像http://localhost:111/Default.aspx那样?

这是我在本地主机和生产服务器的页面源中看到的: <link href="~/css/style.css" rel="stylesheet" type="text/css"></link>。 css在生产时是活动的,但不是我的本地主机。

4 个答案:

答案 0 :(得分:1)

这样就可以了。

<link href="<%=ResolveUrl("~/css/style.css")%>" runat="server" rel="stylesheet" type="text/css" />

答案 1 :(得分:1)

我去了解决方案资源管理器,然后选择了标有C:\...\mywebsite的树中的项目,然后我转到VS右下角的“属性”窗口,并将虚拟路径更改为/。现在我的开发网站的根目录与我的prod网站的根目录相同。

答案 2 :(得分:0)

您已经拥有,~在呈现网页时解析为网站的根目录。

进一步阅读:http://weblogs.asp.net/fmarguerie/archive/2004/05/05/avoiding-problems-with-relative-and-absolute-urls-in-asp-net.aspx(适用于chrome,FF和IE)。

~在服务器上解析(这就是您需要runat="server")的原因 运行此代码以生成来自HTTP请求的响应,该请求来自您的dev服务器,该服务器从磁盘上项目的位置托管站点。
~并不假设该网站位于子目录中,开发服务器将知道该网站的根目录。

在生产环境中,IIS将从服务器计算机磁盘上的另一个位置托管该站点。

答案 3 :(得分:-1)

将其更改为:

<link href="/css/style.css"" rel="stylesheet" type="text/css" />

删除 runat="server" (如果您不需要 )。

而不是 href="~/css/style.css" href="/css/style.css"

href="/css/style.css"表示您网站的 root 中有一个名为 css 的文件夹,另一个名为 style.css 的文件它

<强>更新

正如评论所指出的,此解决方案仅在您的应用以root用户身份运行时才有效。