【发布时间】:2009-07-23 13:10:23
【问题描述】:
我有一个母版页,在 head 标签内有一个 contentplaceholder 控件,这样我就可以从内容页面轻松地将任何内容添加到 head 标签(如链接标签、样式、脚本等)。
现在,在其中一个内容页面上,我有一个样式表(内联,即在样式标签内,未与链接标签链接),我想根据页面的状态显示/隐藏它(页面就像使用页面上的多视图控件的向导一样工作)。我尝试使用 Visible = false 将样式表包装在占位符控件中,然后在代码中将 Visible 设置为 true,但这不起作用,样式标记未在 html 中呈现。我删除了占位符控件并将 runat="server" 直接添加到样式标记中,但这也不起作用。
我首先隐藏样式的原因是它们包含格式占位符,即。 {0}、{1} ..etc,我在显示样式表之前将其替换为后面的代码。我不想使用这些占位符将样式发送给客户。为了更清楚,样式看起来类似于这样:
<asp:placeholder ID="_stylesPlaceHolder" runat="server" Visible="false">
<style type="text/css">
#elementid
{
width: {0}px;
height: {0}px;
overflow: hidden;
position: relative;
}
#elementid2
{
position: absolute;
width: {1}px;
height: {2}px;
top: {3}px;
left: {4}px;
}
.. and so on
</style>
</asp:placeholder>
我可以尝试从页面后面的代码中动态添加样式(例如使用 Page.Header.StyleSheet.CreateStyleRule),但我更喜欢将它们保存在 .aspx 文件中,以便将 html 与代码分开,并且也可以更轻松地更改没有动态值的样式。
谢谢
【问题讨论】:
-
嗨 Waleed,这两种方法似乎都对我有用。设置 然后在代码隐藏中显示/隐藏它是最好的。如果您尝试从 标记中删除 runat="server" 是否有效?
-
感谢您的评论,这很奇怪,因为它在这里不起作用。请问您使用的是什么版本的 ASP.NET?我正在使用 ASP.NET 2.0。不幸的是,我无法从 head 标记中删除 runat="server",因为它是设置内容页面标题所必需的,我还是尝试了,但遇到了运行时错误。
-
好的,我慢慢开始明白发生了什么。当我发布这个问题时,我正在使用谷歌浏览器进行测试,现在我使用 FireFox 进行了测试,它正在工作!我在 Chrome 中查看页面源代码,但什么也没看到,样式标签未呈现。我在 FireFox 中查看,样式标签就在那里!怎么回事?!
标签: asp.net master-pages