2009-05-16 7 views
2

데이터베이스에 4 개의 범주를 저장하는 테이블이 있으며 테이블의 구조는 ID (GUID), 설명입니다. 카테고리를 드롭 다운 목록 (asp.net webform)에로드하여 사람들이 카테고리를 선택하고 선택한 항목을 기반으로합니다. 그런 다음 선택한 항목과 관련된 정보를 표시하고 다른 항목을 숨 깁니다.코딩 실습 : 하드 코딩을 피하는 방법은 무엇입니까?

현재 관련 정보를 표시하기 위해 코드에 하드 코딩 된 GUID를 기반으로 "선택 사례"를 수행합니다. 코드 뒤에 GUID의 하드 코드없이이 작업을 수행하는 더 좋은 방법이 있습니까? Guid/Description와 연관된 데이터를 무엇

답변

4

...

데이터베이스 자체에 추가되는 후보처럼 하드 코딩 된 소리의를 한 데이터입니다.

정보가 Category/Guid 인 경우 해당 정보를 저장할 데이터베이스 테이블을 확장하는 것이 좋습니다. 이 Categor Y/Guid 당 정보의 여러 조각이 있다면

, 다음에 CategoryID으로 새 테이블을 만드는 것을 고려하고 Category 표와 ExtraInfo 테이블 사이의 외래 키 관계가

+0

문제는 표가 아닙니다. guid는 테이블의 기본 키이며 설명은 카테고리의 이름입니다. 카테고리 아이디 (GUID)를 기반으로 사용자가 선택한 카테고리를 결정한 다음 사용자가 선택한 것을 기반으로 숨겨진 패널을 표시하려고합니다. 하드 코드 부분은 어떤 패널을 표시할지 결정할 수있는 범주 ID입니다. 말이 돼? – Jack

+0

DB 테이블에 6 개의 GUID/카테고리가 있습니다 ... 그리고 ASP.NET 페이지에 6 개의 별도 패널이 있습니까? 두 가지 중 하나를 수행 할 수 있습니다. 패널 ID를 데이터베이스 테이블에 추가하거나 패널 이름을 패널 ID로 쉽게 변환 할 수 있도록 패널 이름을 지정할 수 있습니다. 예 : Category = "The First Category"/ PanelID = "pnlTheFirstCategory"- categoryName에서 공간을 프로그램 적으로 제거하고 패널을 검색하여 표시되도록 ... –

1

당신은 데이터베이스를 조회 할 수 앱이 시작될 때의 GUID는 Dictionary에 정적으로 캐시됩니다.

1

웹 구성에 GUID를 저장하고 런타임에로드 할 수 있습니다. 그런 다음 재 컴파일해야하는 다른 w/o로 해당 GUID를 쉽게 바꿀 수 있습니다.

+0

하드 코딩을 피할 방법이 없습니까? 귀하의 제안은 내 솔루션이 web.config에 올리길 기대하는 것과 같습니다. 내가 생각하기에 당신은 한 곳에서만 편집해야한다는 것입니다. 그 카테고리 GUID 하드 코딩하지 않고 그것을 할 수있는 방법이 있습니까? – Jack

+0

다른 사람들이 제안한 것처럼 다른 곳에 보관하지 않아도됩니다. –

0

Categories 테이블과 Posts 테이블 (또는 카테고리에 태그를 달아 놓는 것이 무엇이든)이 있어야합니다. Posts 테이블에는 CategoryID에 대한 열이 있습니다 (각 게시물은 하나의 카테고리에만 속할 수 있다고 가정 함), 카테고리 이름이 한 곳 (데이터 정규화)이되도록.

드롭 다운 목록을 렌더링 할 때 데이터베이스에서 GUID : s를 선택합니다. 하드 코딩이 필요하지 않으며 다른 카테고리를 추가하거나 제거하면 드롭 다운 목록에 사용 가능한 카테고리가 자동으로 반영됩니다.

0

범주 열 또는 범주 이름과 값이 포함 된 튜플에 드롭 다운 목록을 바인딩하면 SelectedValue 속성을 사용하여 코드 숨김에 Guid을로드 할 수 있습니다. 그런 다음 드롭 다운 목록에 DataTextFieldDataValueField을 설정합니다.

관련 문제