2009-05-16 30 views
2

私は4つのカテゴリを格納するテーブルをデータベースに持っており、テーブルの構造はID(GUID)、descriptionです。私はカテゴリをドロップダウンリスト(asp.net webform)にロードして、人々がカテゴリを選択し、選択したものに基づいていることを許可します。私はその選択に関連した情報を表示し、他のものを隠すでしょう。コーディング実践:どのようにハードコーディングを避けるために?

現在、私は関連する情報を表示するためにコードの背後にハードコードされたGUIDに基づいて "選択ケース"を行います。コードの背後にあるGUIDのハードコードなしでこれを行うより良い方法はありますか?

答えて

4

Guid/Descriptionに関連付けられたデータは、どのようなものです...

あなたはデータベース自体に追加された候補のような音のをハードコーディングしたデータ。

Category/Guidごとに1つの情報がある場合は、その情報を格納するデータベーステーブルを拡張することを検討してください。それはCategor Y/Guidあたりの情報の複数の部分はなら

、それにCategoryIDを持つ新しいテーブルを作成することを検討し、あなたのCategory表とあなたのExtraInfoテーブル間の外部キー関係が

+0

問題はテーブルではありません。 GUIDはテーブルの主キーで、説明はカテゴリの名前です。カテゴリID(GUID)に基づいてユーザーが選択したカテゴリを特定し、ユーザーが選択したものに基づいて非表示のパネルを表示する必要があります。ハードコード部分は、どのパネルを表示するかを決定できるカテゴリIDです。それは理にかなっていますか? – Jack

+0

DBテーブルには6つのGUID /カテゴリがあり、ASP.NETページには6つの独立したパネルがありますか? 2つのうちの1つを行うことができます。パネルIDをデータベーステーブルに追加するか、カテゴリ名をパネルIDに簡単に変換できるようにパネル名を付けてください。例えばCategory = "The First Category"/PanelID = "pnlTheFirstCategory" - categoryNameからスペースをプログラム的に取り除き、パネルを検索して可視にする方法... –

1

データベースを照会できアプリケーションの起動時にGUIDを取得し、それらをスタティックDictionaryにキャッシュします。

1

web-configにGUIDを格納し、実行時にロードすることができます。そのGUIDを、再コンパイルする必要のない別のものに簡単に置き換えることができます。

+0

ハードコーディングを避ける方法はありますか?あなたの提案は私のソリューションがweb.configに置くことを期待するのと同じです。私はあなたが1つの場所で編集する必要があるということは、アップサイドだと思います。それらのカテゴリGUIDをハードコーディングせずにそれを行う方法はありませんか? – Jack

+0

他のものの多くが示唆しているように、それを他の場所に保持しないでください。 –

0

テーブルにはCategoriesテーブルとPostsテーブル(またはカテゴリにタグを付けるもの)が必要です。 PostsテーブルにはCategoryIDの列があります(各投稿は1つのカテゴリにしか属していないものとします)。そのため、カテゴリ名は1か所にしかありません(データを正規化します)。

ドロップダウンリストをレンダリングするときに、データベースからGUID:sを選択します。ハードコーディングは必要ありません。別のカテゴリを追加する(または削除する)と、ドロップダウンリストには自動的に利用可能なカテゴリが反映されます。

0

カテゴリの行またはカテゴリ名と値を含むタプルにドロップダウンリストをバインドすると、SelectedValueプロパティを使用してコードビハインドにGuidをロードできます。次に、ドロップダウンリストにDataTextFieldDataValueFieldを設定します。

関連する問題