如何将母版页和CSS应用于子页面

时间:2011-03-04 15:58:32

标签: asp.net css master-pages

我有一个母版页面可以应用于我的所有页面,但母版页正在进行其工作,但似乎无法解析我在子文件夹中的页面的CSS文件地址。

我有一组像这样的文件夹:

RootContent
      UsersContent
      AdminContent

由于母版页和css文件位于Root内容上,当母版页尝试在UsersContent或AdminContent中找到css文件时,它无法找到它。

我正在使用JavaScript来检测浏览器并为大多数浏览器正确设置css,为IE6设置另一个文件,因为这里需要任何想法吗?

<script type="text/javascript">
    if((BrowserDetect.browser.toString() == "Firefox") && (BrowserDetect.version.toString() == "3.5"))
    {
        document.write('<link rel="Stylesheet" href="<%=ResolveUrl("~/StyleSheet.css") %>" type="text/css" />');
    }
    else if((BrowserDetect.browser.toString() == "Explorer") && (BrowserDetect.version.toString() == "6"))
    {
        document.write('<link rel="Stylesheet" href="~/StylesheetIE6.css" type="text/css" />');
    }
</script>

在上面的代码中,我尝试<% ResolveUrl("~/StyleSheet.css") %>但是没有用,它在同一个文件夹中有效但在孩子上没有。

编辑:只是为了澄清我的CSS文件在我的根文件夹上而不在孩子身上

3 个答案:

答案 0 :(得分:2)

最简单的方法在您的Web项目下添加App_Themes文件夹。添加主题并在该主题下添加所有css文件包括其各自的图像目录。

在您的web.config中,添加

它会自动添加到每个页面。

注意: - 在这种情况下,所有css都将被应用。如果你有特定于浏览器的CSS,那就不是这样了。

[SEE UPDATED]

要由IE 6而不是其他浏览器加载的“iespecific.css”之类的CSS文件,请在网页的HEAD部分使用以下代码:

<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="iespecific.css" />
<![endif]-->

同样,对于任何版本的IE 5(包括5.0,5.01,5.5等),请使用以下内容:

<!--[if IE 5]>
<link rel="stylesheet" type="text/css" href="iespecific.css" />
<![endif]-->

要检测IE 5.5的发布版本,您需要以下代码:

<!--[if IE 5.5000]>
<link rel="stylesheet" type="text/css" href="iespecific.css" />
<![endif]-->

例如,要测试大于或等于版本6的IE的所有版本,可以使用

<!--[if gte IE 6]>
<link rel="stylesheet" type="text/css" href="iespecific.css" />
<![endif]-->

上面的代码示例有效,因为普通浏览器将整个块视为HTML注释,因为它们包含在“”中。但是,IE 5或更高版本将尝试解析块以查看它是否具有特定于它的指令。

您还可以使用此方法排除某个样式表。例如,要从IE 6中排除CSS文件“not-ie.css”,请使用:

<![if !(IE 6)]>
<link rel="stylesheet" type="text/css" href="not-ie.css" />
<![endif]>

注意操作员“!”紧接在“IE”之前。这是NOT运算符,只有在浏览器不匹配表达式“IE 6”时才会使用后面的语句。

同样,上述代码有效,因为普通浏览器会解释“”和“&lt; [endif]&gt;”作为它无法识别的HTML标记,并忽略它们。但是,此代码在HTML验证器中不会验证为正确,因为它不使用有效的HTML标记。

请注意,您也可以在不指定版本号的情况下测试IE。例如,仅当浏览器不是IE 5或更高版本时,以下内容才会加载样式表:

<![if !IE]>
<link rel="stylesheet" type="text/css" href="not-ie.css" />
<![endif]>

可以在http://msdn2.microsoft.com/en-us/library/ms537512.aspx

找到Microsoft有关此非标准功能的文档

由于文档没有指定这些功能仅适用于Windows的Windows版本,我认为它们也适用于Macintosh版本。我虽然无法验证这一点。

答案 1 :(得分:0)

为此,我一直使用ResolveClientUrl。你可以尝试而不是ResolveUrl吗?这里是a post讨论差异。

答案 2 :(得分:0)

您是否尝试将runat="server"添加到链接代码?为我工作。