代码之家  ›  专栏  ›  技术社区  ›  Waleed Eissa

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

  •  0
  • Waleed Eissa  · 技术社区  · 15 年前

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

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

    我之所以首先隐藏样式,是因为它们包含格式化占位符,即{0},{1}..等,在显示样式表之前,我会在后面的代码中替换这些占位符。我不想把这些款式和鞋帮一起寄给客户。为了更清楚,样式如下:

    <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 回复  |  直到 15 年前
        1
  •  1
  •   Waleed Eissa    15 年前

    好吧,现在我终于明白了。首先,asp.net没有问题。当我发布这个问题时,我正在用google chrome进行测试。正如我在上面的评论中所指出的,我随后用firefox进行了测试,发现样式标签确实存在。

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