0

假设我在一个 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
  }
4

3 回答 3

1

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

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

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

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

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

于 2012-05-16T18:57:08.757 回答
0

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

于 2012-05-16T18:15:23.093 回答
0

我感觉更好解决方案是:

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

于 2012-05-17T10:13:01.877 回答