【问题标题】:possible to reference CSS selector in code-behind ASP.NET可以在代码隐藏 ASP.NET 中引用 CSS 选择器
【发布时间】:2012-05-17 18:13:01
【问题描述】:

假设我在一个 aspx 页面上有这个 HTML 标记:

      <div id = 'logo-container' class='foo'>
          <img alt='logo' src ="images/foo.png" />
      </div>

纯 html,不是 runat=server。

是否有可能,在 aspx 代码隐藏中,使用 CSS 选择器来引用 DOM 元素?您能否参考 IMG 执行以下操作:

 foreach element in GetElement("#logo-container img")
  {
       do something with element, e.g. change a style attribute
  }

【问题讨论】:

    标签: asp.net css-selectors code-behind


    【解决方案1】:

    不,很遗憾,你不能。你最好按照预期的方式去做。如果您需要访问代码隐藏中的控件,只需添加runat="server" 属性即可。

    考虑到您需要在代码隐藏中访问它们,为什么不想在服务器上运行这些控件?您是否担心自动生成的 ID?如果是这样,您可以通过将 ClientIDMode 设置为 static 来解决此问题。

    如果您确实在服务器上运行控件,您应该能够使用 LINQ 找到具有该类的控件,如下所示:

    var ctrls = pnlControls.Controls.OfType<WebControl>().Where(i => i.CssClass == "logo-container");   
    

    注意:如果需要,您可以将WebControl 替换为更具体的控件。

    【讨论】:

      【解决方案2】:

      简短回答 - 否。如果控件未设置为 runat="server",则无法从后面的代码访问它。但是,您可以使用 Javascript 访问该元素,然后调用服务器端方法来执行您想要执行的任何逻辑。

      【讨论】:

        【解决方案3】:

        我感觉好多了 解决办法是:

        如果您真的想更改样式/css 类,您可以更好地使用 jquery 并自定义您想要的方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-26
          • 2017-07-09
          • 1970-01-01
          • 1970-01-01
          • 2021-12-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多