【问题标题】:dynamically change css attribute's value in asp.net在 asp.net 中动态更改 css 属性的值
【发布时间】:2009-07-15 07:43:26
【问题描述】:

如何在运行时更改 css 属性值,如所有 h1 color="blue" 和所有 p color="green"。如果有人知道,请帮助我!

【问题讨论】:

  • 你想在哪里做这个?使用 javascript?在你的代码隐藏中?使用什么语言? VB? C#? PS:您提供的相关标签越多,就会吸引更多具有正确技能的人。

标签: asp.net web-controls dynamic


【解决方案1】:

很简单(我假设你想做这个服务器端)- 将标题声明为 runat=server 并给它一个 id:

<h1 runat="server" id="someHeading">Blah</h1>

然后您可以在后面的代码中以编程方式对其进行操作,如下所示:

someHeading.Style.Add("color", "blue");

这将呈现以下 HTML:

<h1 id="someHeading" style="color:blue;">Blah</h1>

您可能希望这样做不同并在样式表中定义样式并在运行时动态更改类。

更新 - 当您动态更改它时,以下可能更合适:

someHeading.Style["color"] = "red";

我相信其他人会在客户端发布如何操作的答案。 :-)

另一个(也许更好) 用于查看服务器端的选项是使用皮肤和主题。阅读这些上的ASP.NET FAQ 以了解更多信息。

【讨论】:

    【解决方案2】:

    在 JQuery 中你可以简单地使用

    $('h1').css("color","blue");
    

    ASP.Net 代码隐藏没有选择器来将 css 应用于多个 html 标记,因为 HTML 仅在大多数代码执行后生成。这发生在 Page_PreRender 事件中。

    您可以做的是获取呈现的 html 并执行一些搜索和/或修改,无论是使用正则表达式还是普通搜索替换。

    我建议您使用 javascript 来执行此操作,因为在 Page_PreRender 事件中修改呈现的 html 肯定会在以后给您带来问题并且基本上不会完成。

    【讨论】:

    • 如果您对服务器上的多个控件执行此操作,则可以通过动态更改皮肤/主题来轻松完成。
    【解决方案3】:

    请尝试下面的代码,我会为你工作:

    someHeading.Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red");
    

    【讨论】:

      【解决方案4】:

      我相信他对页面上的每个项目都有意义。我建议在当前样式表之后在标题中添加文字,然后使用以下代码添加内联样式:

      <asp:Literal ID="litInlineStyles" runat="server" EnableViewState="false" Visible="false">
        <style type="text/css">
        h1 
        {
          color: {h1Colour}
        }
        p
        {
          color: {pColour}
        }
        </style>
      </asp:Literal>
      

      我故意禁用了视图状态和可见性,因此您必须在每次页面加载时声明要用什么替换 {h1Colour} 和 {pColour} 以及将文字设置为可见。

      这应该可以帮助您指明正确的方向。

      【讨论】:

      • 我应该注意到这非常适合仅修复单个页面,如果您在全球范围内做某事,我可能会使用主题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多