Scriptlet不能在head标签中工作
本文关键字:工作 标签 head 不能 Scriptlet | 更新日期: 2023-09-27 18:18:44
我想在生产环境的CSS文件中添加版本号,而不是强迫用户每次在prod服务器上部署新版本后按Ctrl+F5下载新的CSS文件,因为旧版本缓存在浏览器中。
我正在添加构建号作为这样的查询字符串参数。
link href="Styles/jquery.Autocomplete.css?<%= Globals.BuildNumber %>" rel="stylesheet" type="text/css"
但是输出是这样的
link href="../../Styles/jquery.Autocomplete.css?<%= Globals.BuildNumber %>"
查看scriptlet在head标签中不工作,因为这在body标签中很好。
从<head>
标签中删除runat="server"
属性(转义href
字符串)
<head >
<title></title>
<link rel="Stylesheet" href="Styles/jquery.Autocomplete.css?<%= Globals.BuildNumber %>" .. />
</head>
,但这不是一个单一的(可能不太好的)解决方案。(欲了解更多信息,请阅读文章)。如果您可以编写以下代码,则无需删除runat="server"
属性:
使用HtmlLink
(System.Web.UI.)HtmlControls名称空间)
myHtmlLink.Href = "Styles/jquery.Autocomplete.css?" + Globals.BuildNumber;
myHtmlLink.Attributes.Add("rel", "stylesheet");
myHtmlLink.Attributes.Add("type", "text/css");
Header.Controls.Add(myHtmlLink);
它没有记录在任何地方,但你已经发现它似乎不支持嵌入代码块HtmlHead。有一种方法可以解决这个问题。(如果不明显,应该放在代码隐藏文件中):
const int BuildNumber = 1;
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
// add style sheet
Header.Controls.Add(new Literal() {
Text = string.Format(
@"<link rel='stylesheet' type='text/css' href='custom.css?{0}' />",
BuildNumber
)
});
}