2009-06-21 8 views
0

をコンパイルした後、IDを検索します。サイトがまとめたと、次のようなasp.netで何かIDを割り当てると

<asp:Label runat="server" ID="ct100_blahblah_what_mylabel" Text="some text"></asp:Label> 

もう少しabscure何かにHTMLの変更でIDを実行していると、私は確実にそれがどうなるかを予測する(方法がわからない)ことはできませんしかし、後に

javascriptで選択してください。

どの瞬間にそのラベルのIDが何であるかサーバーに尋ねる方法はありますか?

この現象について詳しく知るには、いくつかのキーワードがありますか?

+0

これは面倒なことですが、私は自分自身に服従しました。答えとして、ClientIDを使用する必要があります。私がしたのは、特定のコントロール要素IDを取得する必要があるときはいつでも、<%= control.ClientID%>ブロックを使用することでした。それは悲しいことに非常に扱いにくく、良い解決策ではありませんが、唯一の解決策かもしれません。 – Skurmedel

答えて

3

あなたが必要ClientIDプロパティこれには、実行時に生成されたコントロールのIDが含まれます。コードの背後にあるJavaScriptを発行して、コントロールのクライアントIDをJavaScript変数に設定して参照できるようにすることができます。

EDIT:追加の例

以下は、クライアントIDを使用してラベルを検索し、そのテキストを更新します。

 
    <html> 
    <body> 
     <asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label> 

     <script language="javascript"> 
      var mylabelID = "<%= mylabel.ClientID %>"; 
      var label = document.getElementById(mylabelID); 
      label.innerHTML += " changed"; 
     </script> 
    </body> 
    </html> 
+0

私は例を挙げてもらえますか? – aggitan

3

私はあなたがClientIDプロパティを探していると思います。

ClientID値は、多くの場合、 クライアントサイドスクリプトで制御するためにレンダリングされたHTML 要素にアクセスするプログラムで に使用されています。

あなたの他のオプションは、このようなHTML要素で、あなたのコントロールをラップすることです:

<span id="foo"> 
    <asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label> 
</span> 

この外側要素がrunat="server"属性を持っていないので、そのidはレンダリングに変更されることはありません。これはあなたのJavaScript関数は、スパンfooから内側の要素をプルするか、あなたはjQueryのようなJavaScriptフレームワークを使用している場合、あなたが戻って、このようなラベルを引くことができ、変更するしなければならないことを意味する:

$("span#foo span"); 
+0

私は例を挙げてもらえますか? – aggitan

関連する問題