4

私は、asp ラベルのリストがある Web サイトで作業していました。javascript コードを使用して各ボックスの名前を取得し、ボックス内のテキストを変更できるようにしました。私はこれに似た for ループを使用していましたが、すべてのラベルを同様に呼び出して、それらをループに入れてすべてを循環させる方法があるかどうか興味がありました。サーバー側のコードでは次のようになります。

asp コード:

<asp:Label runat="server" ID="lblWorld1" Text="" />
<asp:Label runat="server" ID="lblWorld2" Text="" />
<asp:Label runat="server" ID="lblWorld3" Text="" />
<asp:Label runat="server" ID="lblWorld4" Text="" />
<asp:Label runat="server" ID="lblWorld5" Text="" />

c# コード

for(int c = 1; c <= 5 ; c++)

{

  var label = "lblWorld" + c.toString();

  label.Text = "Hello World!";

}

ただし、サーバー側のコードでは、これは機能しません。for ループを作成し、動的システムでラベルの名前を取得する方法はありますか。

4

2 に答える 2

5
  1. すべてのラベルを や などのコンテナーに入れPanelますPlaceHolder。そのコンテナに ID を付けます。
  2. コードで ID でコンテナーを取得します。
  3. そのコンテナーのコレクションを繰り返し処理して、Controls各ラベルを取得します。OfType<Label>ラベル以外のタイプのコントロールが存在する可能性がある場合に使用します。
于 2013-02-04T21:33:28.773 に答える
0

現在のロジックを次のように実行できます。

for(int c = 1; c <= 5 ; c++)
{
var label = "lblWorld" + c.toString();
Label tempLabel = new Label;
tempLabel.ID = label.ToString();
tempLabel.Text = "Hello World!";   
}

ただし、個々のラベルに値を割り当てる必要があるため、ラベルをコンテナーとして処理する方がおそらくよりスケーラブルです。

于 2013-02-04T21:37:14.430 に答える