2013-07-20 1 views
1

구성 설정 (데이터베이스에 저장되어 있음)을보기에 얼마나 정확하게 전달합니까?MVC4 사이트 옵션

사용자가 프로필에서 다른 설정을 지정할 수 있다고 가정 해 봅니다. 이 옵션은 모든보기 및 부분보기에서 사용할 수 있어야합니다.

일부 옵션 :

  • 글로벌 정적 변수 - 나쁜 관행
  • Viewbag?
  • '실제'모델과 '구성'모델을 포함하는 래퍼 클래스.

정보를 얻으려면 로직을 어디에 넣으시겠습니까? 각 작업마다 메서드 호출을 피하고 싶습니다. (사용자 지정 기본 컨트롤러를 사용하고 있을지도 모릅니다.)

'mvc options', 'global variables mvc', 'viewbag mvc', ' 구성 mvc ', ... 관련이 없습니다. 아마도 잘못된 검색 키워드를 사용하고있을뿐입니다.

감사합니다.

+0

재미있는 싱글 톤 패턴을 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/ff650316.aspx –

답변

3
  • 글로벌 정적 변수 - 나쁜 관행

뿐만 아니라 나쁜 습관이다하지만 모든 사용자들 사이에서 공유됩니다. 귀하의 경우 사용자 별 정보가 필요합니다.

  • Viewbag?

마술 문자열에 의존하는 약식 수집, 나쁜 습관. 나는 그것을 좋아하지도 않는다. '실제'모델과 '구성'모델이 포함

  • 래퍼 클래스입니다.

예, Settings 속성이 포함될 모든보기에 공통 기본보기 모델을 사용할 수 있습니다.

정보를 얻으려면 로직을 어디에 넣으시겠습니까?

하나의 가능성은 뷰에 전달 모델을 검색, 후 각 작업을 을 실행하는 글로벌 액션 필터가하는 귀하의 모든 모델은 공통 기준 뷰 모델에서 파생 된 것이기 때문에, 데이터베이스를 조회 할 것이며, 설정 등록 정보에 값을 지정하십시오.

다른 방법을 고려해 볼 수도 있습니다. 모든 관점에서이 정보가 필요하다고 언급하셨습니다. 공통 기본 뷰 모델을 갖는 대신 사용자 정의 HTML 도우미를 작성하여 데이터베이스에서이 정보를 검색하여 리턴 할 수 있습니다. 물론 데이터베이스로의 다중 라운드 트립을 피하기 위해 검색된 사용자 설정을 HttpContext.Items에 캐시 할 수 있습니다.

+0

예, 정적 클래스를 사용하지 않았지만 가능한 답변 :-) 이미 기본 클래스가 최상의 솔루션이라고 생각했지만 액션 필터 나 HTML 도우미를 생각하지 않았습니다. 나는 둘 다 살펴볼 것이다. 감사! – Nullius