2

コンテンツ プレースホルダーでホストされているユーザー コントロールがあります。

これは 1 つのシナリオにすぎませんが、ユーザー コントロールはサイト全体で使用されます。

ユーザー コントロールは JSON 要求を生成する責任があります。恐ろしいことに、フォーム要素の ID/名前が私が呼んだものではないことに気付きました。

.net v4 を使用している場合、これをオフにできることはわかっていますが、プロジェクトは v2 です。

コード ビハインドでコントロール パスを取得する方法を教えてください。これは、ctl00_ContentPlaceHolder_UserControlID 部分を動的に決定することを意味します。

次に、別のフォーム要素を作成できます->名前を介して投稿します->投稿後にサーバー側で、フォーム要素が何であるかを知ることができます。

前もって感謝します。

4

2 に答える 2

3

CliendIDJavaScript でコントロールを参照する場合にのみ、 を使用してください。

JavaScript のコントロールの名前のClientID 。これは、すべての Web コントロールに存在します。

Web サーバー コントロールが HTML 要素としてレンダリングされると、HTML 要素の id 属性が ClientID プロパティの値に設定されます。ClientID 値は、document.getElementById メソッドを使用してクライアント スクリプト内の HTML 要素にアクセスするためによく使用されます。

親コントロールの名前を組み合わせて、要素の一意の ID を JavaScript で生成します。

于 2012-08-20T07:55:45.463 に答える
1

頭のてっぺんから、テストせずに、指定されたユーザーコントロールについて再帰的に親チェーンの最初のコントロールを見つけ、帰りの旅行中に、すべてのClientIdの「パス」を構築します。

public string ClientIdPath(Control ctl)
{
     if (ctl.Parent !=null ) 
     { 
         return = string.Format("{0}_{1}", ClientIdPath(ctl.Parent), ctl.ClientId ); 
     }
     else
     {
         return ctl.ClientId;
     }
}
于 2012-08-20T07:50:06.587 に答える