0

aspx ページに次の HTML マークアップがあるとします。

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

runat=serverではなく、純粋な html 。

aspx code-behindで、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 が心配ですか? その場合は、 staticに設定することでこれを解決できClientIDModeます。

サーバーでコントロールを実行する場合は、次のように 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 に答える