4

SharePoint 用の C# で Web パーツを作成しました。基本的には、テキスト ボックス、リテラル、バリデータ、およびボタンを備えたフォームです。

このフォームをきれいに見せるためにレンダリングする方法がわかりません。レイアウトなどは、この c# クラス内で完全に行われています。

現時点では、CreateChildControls()メソッドをオーバーライドし、次のようなものを使用して各フォーム コントロールを追加するだけです。this.Controls.Add(submitButton);

このフォームをレイアウトする最善の方法についてのアイデアはありますか?

ありがとう。

4

5 に答える 5

3

カスタム Web パーツを作成するときは、 CreateChildControls( ) メソッドとRender()メソッドをオーバーライドして実装することも好みます。Render()メソッドでは、html 出力を完全に制御でき、 this.someInnerControl.RenderControl(writer)を呼び出すことで内部コントロールをレンダリングできます。

HTML 出力を完全に制御できるため、CSS を使用して HTML のスタイルを簡単に設定できます。他の人が示唆するように、外部 CSS ファイルを使用して、スタイルをhtml 要素のclass属性またはASP.NET Web コントロールのCssClassプロパティに適用します。

特別なブランディングを必要としない Web パーツを実装するときは、SharePoint によって定義された CSS クラスを再利用することを好みます。これにより、Web パーツが SharePoint によって提供される Web パーツと視覚的に類似し、一貫したルック アンド フィールが維持されるようになります。

SharePoint 定義の CSS スタイルを使用する場合、html 出力に注意する必要があります。一部の CSS クラスは、適切にレンダリングするために特定の html 構造を必要とします。ブラウザーの [ソースの表示] を使用して、模倣しようとしている SharePoint 要素の html をいつでも確認できます。

于 2009-03-06T00:22:08.903 に答える
1

既存の共有ポイント ページからソースを取得し、共有ポイントで定義されたスタイルを使用することをお勧めします。 2003 年のスタイルへのこのリンクは古いものですが、それでも開始するための優れたガイドです。CSS クラス名のほとんどは変更されていません。

于 2009-03-03T14:45:58.400 に答える
0

RenderContents(...) メソッドをオーバーライドして、必要に応じて HTML を手動でレンダリングできます。これには、必要な/使用する css インクルード、スクリプト インクルードなどの追加が含まれます。

子コントロールを文字列にレンダリングして出力することもできますが、おそらく base.RenderContents(...) メソッドを呼び出すべきではありません。

子コントロールをレンダリングすることを忘れないようにしてください。

于 2009-03-03T15:36:00.200 に答える
0

設計を確認することが重要な場合は、Web パーツにユーザー コントロールを埋め込むSmartPartを使用します。(ご存じない場合は、Visual Studio 内のツールを使用してユーザー コントロールを設計できます。)

手作業でコーディングしたい場合は、正しい方向に進んでいます。CreateChildControls()メソッド内でコントロールの初期プロパティを作成して設定し、これまでと同じようにthis.Controls.Add()を使用するだけです。

どちらの場合も、可能な場合は CssClass プロパティを使用して、再コンパイルせずに CSS ファイルのルック アンド フィールをいじることができます。CSS クラス名をハードコーディングすることもできますが、Web パーツのプロパティまたは外部構成ソースを使用してこれらを保存する方がよいでしょう。マスター ページで CSS ファイルへの参照を作成するか、この回答に記載されている他の手法を使用してページに挿入します。

MSDN の記事「Windows SharePoint Services の Web パーツ」または「基本的な Web パーツの作成」も役立つ場合があります。

于 2009-03-03T16:52:50.967 に答える
0

私の Web パーツでは、css ファイルをソリューションに含め、次のような方法でページに挿入します。

this.Page.Header.RegisterCss("/_layouts/path/to/css/file.css", false);
于 2009-03-03T14:49:35.927 に答える