这是一个使用VS 2010的ASP.NET中的简单网站,C#使用.我有以下目录结构:
起始页面是Default.aspx,它完全加载.但是当我从Default页面打开Interface / SystemAdminLogin.aspx页面时,它加载没有CSS样式.我在主页中导入了CSS样式表.以下是我在两个.aspx文件中引用MasterPage文件的方式:
Default.aspx的:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
SystemAdminLogin.aspx:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SystemAdminLogin.aspx.cs" Inherits="_Default" %>
我没有看到我的代码有任何错误,但为什么在Interface文件夹中的页面没有加载CSS样式?
请帮忙.
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <Meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Facial Recognition Bank System</title> <Meta name="keywords" content="" /> <Meta name="description" content="" /> <link href="Styles/style.css" rel="stylesheet" type="text/css" media="screen" /> <asp:ContentPlaceHolder ID="HeadContent" runat="server"> </asp:ContentPlaceHolder> </head>
body { margin: 0; padding: 0; background: #fff url(../images/img01.jpg) repeat-x left top; font-family: Arial,Helvetica,sans-serif; font-size: 12px; color: #000; }
解决方法
主页中包含的样式表使用相对路径.
使用runat = server指定样式表链接,并使用虚拟Web根路径(〜)对其进行前缀:
<link href="~/Styles/style.css" rel="stylesheet" type="text/css" media="screen" runat="server" />
要么:
<link href="/Styles/style.css" rel="stylesheet" type="text/css" media="screen" runat="server" />
但请记住,建议使用第一个选项.当您将网站发布到虚拟目录中时,第二个将无法正常工作.
最后评论后…
CSS中的图像URL也应该更新,以便不使用相对路径或进行任何路径遍历(../).
background: #fff url(images/img01.jpg) repeat-x left top;
对于此选项,您需要将图像文件夹移动到“样式”文件夹中(这是一个很好的做法).
最后更新:
看起来头元素也需要是runat = server,以使ASP.NET相对路径(〜)在链接元素中使用runat = server.