2009-05-16 7 views
2

J'ai une table dans la base de données qui stockent la catégorie 4 et la structure de la table est ID (GUID), description. Je charge la catégorie dans une liste déroulante (webform asp.net) pour permettre aux gens de sélectionner une catégorie et en fonction de ce qu'ils ont sélectionné. Je vais ensuite afficher les informations associées à leur sélection et cacher les autres.Pratique de codage: comment éviter le codage dur?

Actuellement, je fais un "cas de sélection" basé sur le GUID que j'ai codé en dur dans le code pour afficher les informations associées. Y a-t-il une meilleure façon de le faire sans code dur dans GUID sur le code derrière?

Répondre

4

Quelles sont les données qui est associé à la Guid/Description ...

Les données que vous avez son hardcoded est comme un candidat pour être ajouté à la base de données elle-même.

S'il s'agit d'une information par Category/Guid, envisagez d'étendre votre table de base de données pour stocker cette information.

Si elle est multiple élément d'information par Categor y/Guid, puis envisager de créer une nouvelle table avec CategoryID sur elle, et une relation clé étrangère entre votre Category table et votre ExtraInfo Table

+0

Le problème n'est pas la table. Le guid est la clé primaire dans le tableau et la description est le nom de la catégorie. Je veux déterminer quelle catégorie sélectionner par l'utilisateur en fonction de l'identifiant de la catégorie (GUID), puis afficher le panneau masqué en fonction de l'utilisateur sélectionné. La partie du code dur est l'identifiant de la catégorie où je peux déterminer quel panneau devrait s'afficher. Cela a-t-il du sens? – Jack

+0

Vous avez donc 6 GUID/catégories dans votre table DB ... et vous avez 6 panneaux séparés sur votre page ASP.NET? Bien que vous puissiez faire l'une des deux choses, vous pouvez soit ajouter les identifiants du panneau à votre table de base de données, soit nommer vos panneaux de telle sorte qu'il est facile de convertir le nom de la catégorie en ID de panneau. par exemple. Category = "La première catégorie"/PanelID = "pnlTheFirstCategory" - De cette façon, vous pouvez supprimer les espaces du nom de catégorie par programme, rechercher le panneau et le rendre visible ... ou quelque chose –

1

Vous pourriez interroger la base de données pour les GUID lorsque l'application démarre et les mettre en cache dans un Dictionary statique.

1

vous pouvez stocker le GUID dans votre web-config et le charger au moment de l'exécution. Ensuite, vous pouvez facilement remplacer ce GUID par un autre sans devoir recompiler.

+0

N'y a-t-il aucun moyen d'éviter le codage? Votre suggestion est la même que ma solution attendez-vous à la mettre sur le web.config. Je suppose que le côté positif est que vous avez seulement à modifier en un seul endroit. N'y a-t-il aucun moyen de le faire sans coder en dur ces catégories GUID? – Jack

+0

pas sans le garder ailleurs, comme beaucoup de ces autres suggèrent. –

0

Vous devez avoir une table Categories et une table Posts (ou toute autre chose que vous marquerez avec vos catégories). Dans le tableau Posts vous avez une colonne pour le CategoryID (en supposant que chaque publication ne peut appartenir qu'à une seule catégorie), de sorte que vous avez seulement le nom de la catégorie à un endroit (normaliser vos données). Lorsque vous affichez la liste déroulante, vous sélectionnez le GUID: s dans la base de données. Pas de codage, et si vous ajoutez une autre catégorie (ou en supprimez une), la liste déroulante reflètera automatiquement les catégories disponibles.

0

Si vous liez la liste déroulante à la ligne Catégorie ou un Tuple qui contient le nom de catégorie et la valeur, vous pouvez charger le Guid dans votre codebehind en utilisant la propriété SelectedValue. Vous devez ensuite définir les DataTextField et DataValueField dans la liste déroulante.