为什么asp.net css链接路径不在head标签之外工作?

时间:2009-03-13 20:41:19

标签: asp.net

为什么asp.net css链接路径不在head标签之外工作?

我在母版页中有这段代码:

<head runat="server">
    <title>Untitled Page</title>
    <link href="../CSS/default.css" rel="stylesheet" type="text/css" runat="server" />
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

这似乎解决了CSS链接无关页面所在的文件夹深度。

我注意到如果你使用css链接它只会解析到正确的路径,如果它在头部(如果它在身体中使用它不起作用)。

我知道如何通过使用ResolveUrl解决它,但我想知道这是否如何工作或者我是否遗漏了什么。

2 个答案:

答案 0 :(得分:4)

当您在母版页的head元素上指定runat =“server”时,ASP.NET会对链接和脚本标记中的网址进行一些神奇的重新定位。

这种奇怪行为有一些细节here

答案 1 :(得分:1)

服务器控件将处理相对URL,并将相应的URL输出到客户端。 <head runat='server'>是执行此操作的服务器控件。如果您删除runat='server'属性,则会看到此地址转换不再发生。