0

私の難解なタイトルが難解すぎないことを願っていますが、実際に何をしたいのかを説明しようと思います。

子ページ「B」と「C」を持つマスターページ「A」があります。これは、ASP.NET の標準マスター ページ モデルで問題なく実装されます。

私のサイトには 'T1' と 'T2' の 2 つのテーマがあります。T1 は自社で、T2 はパートナーです。

使用しているテーマに応じて、ページ 'B' と 'C' に特定のものを表示したいと考えています。たとえば、テーマ「T2」のパートナーに固有のページ「B」に追加のボタンまたはグラフィックを挿入したい場合があります。このコンテンツは、ページ自体に応じて、ページ上の任意のポイントになります。この機能を使用していないパートナーもいます。

問題は、これを可能な限り宣言的に行い、ページがテーマについて持っている知識を最小限に抑えたいことです。

ここで、「リバース」マスター ページの概念が登場します。「テーマ」固有のコンテンツを挿入できる子ページの領域を定義したいと考えています。(「テーマ」と言っているのは、それが ASP.NET が使用するものであり、おそらくコンテンツを関連付けるものだからです)。

だからあなたは不思議に思うかもしれません:

  • これにマスター ページを使用して、追加のコンテンツ セクションを追加できないのはなぜですか? その理由は、そのページに固有の場所のページ上のどこにでもコンテンツが表示される可能性があるためです。
  • 「ネストされた」マスター ページを使用できないのはなぜですか? 本質的に同じ理由です。

考えられる解決策:

そこに挿入されるコンテンツの種類を表すテキストキーを持つ、ある種のユーザーコントロールを作成することについて疑問に思っています。ユーザーコントロールは、おそらく関連する追加のユーザーコントロールを動的に作成することにより、「テーマ」ごとに何を表示するかを知る必要があります。

これは少し不器用に思えるので、同様の状況に対して他の人がどのような解決策を作成したのか疑問に思っています。

4

4 に答える 4

1

CSS を使用して、コンテンツ セクションをページの任意の場所に配置できます。だから私はページの場所などについて心配しません.

私だったら、2 つの異なる css ファイルを 1 つのマスターページに動的にロードし、同じロジックに基づいて、異なるコンテンツをプレースホルダーにレンダリングします。

于 2009-01-19T05:31:18.327 に答える
1

私は現在、CSS には多すぎる同様の要件を持つサイトに取り組んでいます。あるレイアウトでは、ログインはレンダリング順序の上部に向かって水平であり、別のレイアウトでは右側の列にあります。

標準の ASP.NET テーマを使用して、SkinID を介して CSS やロゴの URL などをプッシュしています。

カスタム レイアウトを取得するために、Loader 属性で指定されたリストを介して UserControls をロードする "Loader" コントロールを作成しました。この属性は、ローダー マークアップで直接定義するか、テーマの .skin ファイルを介して定義できます。

リスト内の各キーは、UserControl のベース名です (パスと拡張子を追加します)。コントロールは Page.LoadControl() によって作成されます。

于 2009-01-19T11:32:44.807 に答える
0

さまざまなパートナーの固定レイアウトはありますか? それとも、パートナーに実行時にレイアウトを選択してもらいたいですか?

レイアウトが固定されている場合、禅スタイルの CSS ( http://www.csszengarden.com/ ) を作成し、クライアント/パートナーごとに動的にロードする方法が 1 つ以上あります。パートナーに実行時にレイアウトを変更してもらいたい場合は、おそらく Web パーツを使用することをお勧めします。

お役に立てれば。

于 2009-01-19T05:27:53.327 に答える
0

VS2008 ではネストされたマスター ページを使用できます。

ここを参照してください --

スコット・ガスリーのブログ

于 2009-01-19T11:40:19.127 に答える