如何动态显示/隐藏内容控件中的样式表?

时间:2009-07-23 13:10:23

标签: asp.net master-pages

我在head标签内有一个带有contentplaceholder控件的母版页,这样我就可以轻松地从内容页面向head标签添加任何内容(如链接标签,样式,脚本......等)。

现在,在其中一个内容页面上,我有一个样式表(内联,即在样式标记内,未与链接标记链接),我想根据页面状态显示/隐藏(页面就像一个使用页面上的多视图控件的向导)。我试图将样式表包装在占位符控件中,并使用Visible = false,然后在代码中将Visible设置为true,但这样做不起作用,样式标记不会在html中呈现。我删除了占位符控件并将runat =“server”直接添加到样式标记中,但这也不起作用。

我首先隐藏样式的原因是它们包含格式化占位符,即。 {0},{1} ..等,在显示样式表之前我在后面的代码中替换。我不想使用这些placesholders将样式发送到客户端。为了更清楚,样式看起来类似于:

<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与代码分开,还可以更容易地更改没有动态值的样式。

由于

1 个答案:

答案 0 :(得分:1)

好的,现在我终于明白了。首先,ASP.NET没有任何问题。当我发布问题时,我正在使用谷歌Chrome进行测试。正如我在上面的评论中指出的那样,之后我使用FireFox进行了测试,发现样式标签实际上就在那里。

我在Chrome中再次检查过,但这次我检查了代码检查器而不是页面源代码,样式标记也在那里。 Chrome不喜欢带占位符的样式标记(我正在测试,所以我仍然没有替换占位符)并决定将其隐藏在页面源视图中并将其推送到地毯下!好孩子!!