web-dev-qa-db-ja.com

すべてのオブジェクトでClientIDMode = Staticを設定することに欠点はありますか(マスターページのメインコンテンツで設定)

私はasp.netプロジェクトに取り組んでおり、jquery識別子$(# "objectID")を使用する必要があるたびに。各オブジェクトのClientIDModeを静的に変更する必要があります。デフォルトのクライアントIDモードが継承であることに気付いたので、MainContentクライアントIDモードを静的に設定し、すべてのオブジェクトが静的になったことを確認しました。

これは確かにjqueryで作業するときに多くの時間を節約しますが、私はこれから何か欠点があること、そして最初にClientIDModeを静的に設定してはいけない理由があることを知りたいだけですか?

28

ユーザーコントロールなどのClientIDModeをStaticに設定する場合は注意が必要です。そうしないと、同じIDを持つ複数の要素が作成される可能性があります。

GridViewなどのデータバインドコントロールの場合、各行を確実に区別するために、ClientIDRowSuffixプロパティを使用することもできます。

この投稿 は良い例をいくつか持っています。

18
Graham Clark

JavaScriptでIDを処理する別の方法は、次のようなことです。

var something = '<%= btnId.ClientID %>';

例:次のようなボタンコントロールがある場合:

<asp:Button ID="btnId" runat="server"></asp:Button>    

iDはid="ct100_ContentPlaceHolder1_btnId"に変換され、変数somethingを使用してコントロールにアクセスできます。