2009-03-09 12 views
0

この質問は、Forcing client ids in ASP.NETに似ていますが、あまりよくありません。ASP.NETクライアントIDの確認

ASP.NETは、独自の内部メカニズムに従ってクライアントIDを生成します。バックグラウンドでxmlhttprequestクエリを実行して、更新を行い、コントロールの一部を選択的に再読み込みしたいと思います。私の計画では、クエリを実行し、バックグラウンドでページを再生成します。ただし、更新したいコントロールを選択的にレンダリングしてから、それらのコントロールのhtmlを新しいものに置き換えてください。

私は同じページを生成しているので、クライアントIDが同じであると期待できますか?asp.netで生成されたhtmlを更新したいのですか? JavaScriptを介して?

答えて

1

ASP.NETは、ページ階層内のコントロールの位置に従ってコントロール名とIDを生成します。

この階層が連続するページ再生成の間で変更されない場合、生成されるコントロールIDが異なることはありません。もう1つ注目すべき点は、フラグメントキャッシュを使用すると、制御IDの各要求にランダムな名前が付いていることです。

もう一つの考え方は、ClientID(利用可能なサーバー側)を隠しフィールドに格納し、スクリプトを介してこの情報を取得することです。

1

システムが予測可能であるが、それは彼らを生成しているとして、これらの名前の上に依存関係を構築するために無分別だと、あなたのページが行うときには、いくつかの微妙なバグのために困難なメンテナンスの負担と可能性の両方を作成する能力を持っています変更、彼らはになります。

これはasp.netの一般的な問題の一部ですが、non-aspラッパーノードをターゲットにして子を見たり、クラス名をターゲティングするなど、ノードをターゲットする信頼性の高い方法を見つけることをお勧めします。

1

私はASP.NETコントロールのClientIDをを取得するには、次のトリックを使用します。

<script type="text/javascript"> 
//textBox will contain the DOM element rendered for the <asp:TextBox /> control 
var textBox = document.getElementById("<%= nameTextBox.ClientID %>"); 
</script> 
<asp:TextBox runat="server" ID="TextBox1" /> 
関連する問題