0

Web フォームのシナリオで、関連するコントロールとコンテンツのブロックを囲み、分離するために、一般的にどのサーバー コントロールを使用するのか疑問に思っています。多くの場合、コード ビハインドの UI ロジックに基づいて表示または非表示にできる「パネル」で、HTML および関連するサーバー コントロールのブロックを囲む必要があります。私は通常、パネルを使用することに直面していますが、たとえばテーブル内で複数の TR を囲む必要がある場合、これは機能しません。これは、パネルが Table タグ内で無効な div としてレンダリングされるためです。この状況では、通常、各 TR を runat サーバーに設定し、それぞれを個別に表示/非表示にしますが、もっと良い方法があるはずです。このシナリオで使用される PlaceHolder コントロールを見たことがありますが、誰かがこれを行っているかどうか、または他の提案があるかどうかを知りたいと思っていました。

4

4 に答える 4

1

すべてのシナリオに当てはまる答えは1つではないと思います。何百ものツールがないため、いつでもハンマーを使用できます。

パネルは、結果のdivが正常に機能する場合に最適です。PlaceHolderはWebControlではなくControlを継承するため、使用するオーバーヘッドが少ないという議論をすることができます。テーブルがあり、個々のテーブル行を非表示にする必要がある場合、trにidとrunat="server"を追加しても問題はありません。

または、エディターコントロールの大きなテーブルを作成する必要がある場合(これは、単一のテーブル行を非表示にする場合の90%に適合します)、マークアップの一部を自動化するコントロールも作成しました。 。このコントロールは、太字にするかどうかに関係なく、フィールドヘッダーテキストを自動化し(必須)、ロールオーバーツールチップ付きのヘルプバブルを追加します。手動で追加する必要があるのは、テキストボックスまたはその他のエディターコントロールだけです。プラスの副作用は、カスタムコントロールがVisibleを設定できるIDを提供することです。

于 2008-10-23T04:25:53.057 に答える
0

PlaceHolder コントロールを使用しても、Visual Studio は有効な HTML がないと文句を言います。

歯を食いしばって、コード ビハインドのプロパティにアクセスするサーバー側のコード ブロックを介してそれを行うことができます。

<table>
  <tr>
     ....
  </tr>

  <% if( ShowSecretRow ) { %>

  <tr>
    <td>shhh!</td>
  </tr>

  <% } %>
</table>

ただし注意してください...滑りやすい斜面であり、ASPX が複雑になりすぎないようにしてください。

于 2008-10-22T18:46:18.547 に答える
0

おそらく文字通りのコントロールです。

于 2008-10-22T18:51:09.363 に答える
0

任意の html 要素を使用できます。id と runat サーバーを指定するだけです。これにより、ある程度の柔軟性が得られます。

于 2008-10-22T18:56:31.723 に答える