为什么应用于 bootstrap.css 的更改在发布时不起作用,但在本地主机上起作用?
Why do changes applied to bootstrap.css not work when published but do work on localhost?
我正在 Visual Studio 2017 版本 15.2 (26430.16) 和 Microsoft .NET Framework 版本 4.7.03056 中构建一个 asp.net 网站(网络表单)。 (targetFramework .NET = 4.5.2).
创建解决方案后,将创建一个 bootstrap.css 文件,以及 Site.master 等等。
当我编辑 bootstrap.css 文件时,我可以在本地主机上查看网站时看到发生的变化。但是在发布到我的主机后,它似乎并没有将这些更改应用到实时网站。
我的 'Site.master' 页面的一部分:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<title>CompanyX | <%: Page.Title %></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="keywords" content="CompanyX, ..." class="next-head" />
<meta name="author" content="CompanyX" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta property="og:title" content="CompanyX" />
<meta property="og:description" content="..." />
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<asp:PlaceHolder runat="server">
<%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
<webopt:bundlereference runat="server" path="~/Content/css" />
<asp:ContentPlaceHolder ID="Stylesheets" runat="server">
<link rel="stylesheet" href="/Content/Site.css" type="text/css" runat = "server" />
</asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--To learn more about bundling scripts in ScriptManager see https://go.microsoft.com/fwlink/?LinkID=301884 --%>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
<asp:ScriptReference Name="respond" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
<div class="navbar navbar-inverse navbar-fixed-top">
<%-- navbar css styling is done in the 'bootstrap.css' file --%>
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" runat="server" href="~/">
<asp:Image ID="logo" runat="server" ImageUrl="~/images/logo.png" AlternateText="logo" style="width:15%; height:auto;"></asp:Image>
<span>CompanyX</span>
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a runat="server" href="~/About">About</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" runat="server" href="#">Products<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a runat="server" href="~/Product-1">Product-1</a></li>
<li><a runat="server" href="~/Product-2">Product-2</a></li>
</ul>
</li>
<li><a runat="server" href="~/Photos">Photos</a></li>
<li><a runat="server" href="~/Contact">Contact</a></li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
...
</div>
</form>
</body>
我在 'bootstrap.css' 文件中应用的更改:
.navbar-nav > li > a {
margin-top: 10px;
padding-top: 10px;
padding-bottom: 10px;
line-height: 20px;
font-size: medium;
}
我在此处添加了 margin-top: 10px;
,因此 navbar-collapse collapse
中的项目与 navbar-brand
中的徽标和文本水平对齐。
我希望这对本地主机和已发布的网站都适用。
我还尝试将以下代码添加到 asp:ContentPlaceHolder ID="Stylesheets"
作为对 bootstrap.css
文件的额外引用,但也没有成功。
<link rel="stylesheet" runat="server" href="/Content/bootstrap.css" type="text/css" />
非常感谢您的意见。
您可以在下面看到可视化的结果:
更新:
实际上,当查看页面源代码时,似乎发生了一些奇怪的事情。
我在 Site.master 上呈现 CSS 的代码:
在本地主机上,源代码如下所示:
在发布的网站上,源代码如下所示:
我刚刚意识到我不需要 ContentPlaceHolder ID="Stylesheets"
。我现在已将其从我的代码中删除,但问题仍然存在。
有什么不同的想法吗?
这背后可能有多种原因,我的猜测是:
- 可能是,您的浏览器缓存了
css
文件,并且是
从那里使用文件。尝试清除浏览器缓存或使用
Ctrl + Shift + R
如果使用 firefox 或 chrome 硬重新加载
页。
- 或者可能是因为您的 visual studio 没有上传
css
文件。尝试通过 FileZilla
. 手动替换文件
- 头部或您指定的更改后可能会提到一种样式,覆盖了您的更改。检查应用所需更改后样式是否没有变化。
- 检查是否有一些带有
!important
标志的样式属性。如果有,这意味着它优先于您的常规样式,即使您在所需的更改之后指定它们也是如此。
对我来说最简单的解决方案是删除 css 捆绑。
我删除了这行代码:
<webopt:bundlereference runat="server" path="~/Content/css" />
并且还删除了 Bundle.config 文件。
在我的 <head>
标签中,我现在有以下内容:
<link rel="stylesheet" runat="server" href="/Content/Site.css" type="text/css" />
<link rel="stylesheet" runat="server" href="/Content/bootstrap.css" type="text/css" />
我正在 Visual Studio 2017 版本 15.2 (26430.16) 和 Microsoft .NET Framework 版本 4.7.03056 中构建一个 asp.net 网站(网络表单)。 (targetFramework .NET = 4.5.2).
创建解决方案后,将创建一个 bootstrap.css 文件,以及 Site.master 等等。
当我编辑 bootstrap.css 文件时,我可以在本地主机上查看网站时看到发生的变化。但是在发布到我的主机后,它似乎并没有将这些更改应用到实时网站。
我的 'Site.master' 页面的一部分:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<title>CompanyX | <%: Page.Title %></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="keywords" content="CompanyX, ..." class="next-head" />
<meta name="author" content="CompanyX" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta property="og:title" content="CompanyX" />
<meta property="og:description" content="..." />
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<asp:PlaceHolder runat="server">
<%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
<webopt:bundlereference runat="server" path="~/Content/css" />
<asp:ContentPlaceHolder ID="Stylesheets" runat="server">
<link rel="stylesheet" href="/Content/Site.css" type="text/css" runat = "server" />
</asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--To learn more about bundling scripts in ScriptManager see https://go.microsoft.com/fwlink/?LinkID=301884 --%>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
<asp:ScriptReference Name="respond" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
<div class="navbar navbar-inverse navbar-fixed-top">
<%-- navbar css styling is done in the 'bootstrap.css' file --%>
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" runat="server" href="~/">
<asp:Image ID="logo" runat="server" ImageUrl="~/images/logo.png" AlternateText="logo" style="width:15%; height:auto;"></asp:Image>
<span>CompanyX</span>
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a runat="server" href="~/About">About</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" runat="server" href="#">Products<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a runat="server" href="~/Product-1">Product-1</a></li>
<li><a runat="server" href="~/Product-2">Product-2</a></li>
</ul>
</li>
<li><a runat="server" href="~/Photos">Photos</a></li>
<li><a runat="server" href="~/Contact">Contact</a></li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
...
</div>
</form>
</body>
我在 'bootstrap.css' 文件中应用的更改:
.navbar-nav > li > a {
margin-top: 10px;
padding-top: 10px;
padding-bottom: 10px;
line-height: 20px;
font-size: medium;
}
我在此处添加了 margin-top: 10px;
,因此 navbar-collapse collapse
中的项目与 navbar-brand
中的徽标和文本水平对齐。
我希望这对本地主机和已发布的网站都适用。
我还尝试将以下代码添加到 asp:ContentPlaceHolder ID="Stylesheets"
作为对 bootstrap.css
文件的额外引用,但也没有成功。
<link rel="stylesheet" runat="server" href="/Content/bootstrap.css" type="text/css" />
非常感谢您的意见。
您可以在下面看到可视化的结果:
更新:
实际上,当查看页面源代码时,似乎发生了一些奇怪的事情。
我在 Site.master 上呈现 CSS 的代码:
在本地主机上,源代码如下所示:
在发布的网站上,源代码如下所示:
我刚刚意识到我不需要 ContentPlaceHolder ID="Stylesheets"
。我现在已将其从我的代码中删除,但问题仍然存在。
有什么不同的想法吗?
这背后可能有多种原因,我的猜测是:
- 可能是,您的浏览器缓存了
css
文件,并且是 从那里使用文件。尝试清除浏览器缓存或使用Ctrl + Shift + R
如果使用 firefox 或 chrome 硬重新加载 页。 - 或者可能是因为您的 visual studio 没有上传
css
文件。尝试通过FileZilla
. 手动替换文件
- 头部或您指定的更改后可能会提到一种样式,覆盖了您的更改。检查应用所需更改后样式是否没有变化。
- 检查是否有一些带有
!important
标志的样式属性。如果有,这意味着它优先于您的常规样式,即使您在所需的更改之后指定它们也是如此。
对我来说最简单的解决方案是删除 css 捆绑。
我删除了这行代码:
<webopt:bundlereference runat="server" path="~/Content/css" />
并且还删除了 Bundle.config 文件。
在我的 <head>
标签中,我现在有以下内容:
<link rel="stylesheet" runat="server" href="/Content/Site.css" type="text/css" />
<link rel="stylesheet" runat="server" href="/Content/bootstrap.css" type="text/css" />