2009-08-01 15 views
2

データベース(n個のサブカテゴリを持つカテゴリ)から常に変更できるメニュー項目を持つ階層構造のASP.NETメニューコントロールを作成する必要があります。データベースからメニューを取り込む

これにはいくつかのアプローチがあり、どちらが最も効率的なものか聞いてみたいと思います。

Iを念頭に置いて、それらを持っている:

  1. データベースからデータを取得し、XMLに変換し、次いで、カスタマイズXSLTファイルを使用してそれを変換し、メニューコントロールにバインド
  2. をデータベースからデータを取得し、をループしながら(メニュー項目と子をメニューコントロールに挿入する
  3. SQLサイトマッププロバイダー(Made4Printに感謝)
  4. 他に何か?

答えて

3

ASP.NETメニューコントロールでは、SiteMapDataSourceを通じて.SiteMapファイルを使用できます。

独自のSiteMapProviderを実装することができます。これにより、データベース内でSiteMapの階層構造を維持し、同じコンポーネントをよりダイナミックにすることができます。ここで

は一例です:http://weblogs.asp.net/scottgu/archive/2006/01/11/435108.aspx

HTH

+0

これもオプションです。何が最善であるかわからない:( – markiz

+0

私は最高の解決策を試して、それがあなたの満足のために働くかどうか、もしそうでなければ、あるいは十分な時間があるかどうかを見て、あなたのメニュー構造を作成して維持するための作業量と実行時の動作 –

+0

私はすでに1と2を実装していますが、どうすれば比較できますか? – markiz

1

これを行うには、オプション1よりも1レベルの変換が含まれているので、私は間違いなくオプション2をお勧めします。既にメニュー項目とそのハイライトをループしている場合は、メニュー項目とサブ項目は直接です - 私は、XMLを迂回してXSLTを介してメニュー構造に入ることから大きな利益を見ません。

マルク・

PS:サイトマップの構造とオプションは、(彼らは通常あるべき)あなたのために十分である場合にオプション3(SQLのサイトマッププロバイダ)も、本当に良いアイデアのように聞こえます。私はおそらくそのオプションを最初に試し、そこから行くでしょう。

+0

私の唯一の懸念は、メニュー項目は常に変更することができ、効率です。 メニュー項目が親などの間で削除または移動されます。 メニュー構造を再構築する必要があります。 – markiz

+0

はい、確かですが、変更された構造をまずXMLに変換し、XSLTを実際のメニュー構造に変換すると、このことが成り立ちます。 –

1

私はMarcに同意します。その後、サーバーコントロール内のすべてをパッケージ化して再利用できるようになります。すべてをXMLに変換してから、XSLTを使用して何らかの形で「変換」することは、私にはオーバーヘッドのようです。

関連する問題