2012-06-19 1 views
2

문제ASP MVC 방법은 내가보기 모델의 목록을 가지고 데이터베이스를

를 다시 쿼리하지 않고 드롭 다운 목록을 다시 채워야합니다. 대부분의보기 모델에는 드롭 다운 입력이 있습니다. ModelState가 유효 할 때 모든 것이 잘되고 데이터 입력을 처리 할 수 ​​있지만 양식 검증에 오류가 발생하면 드롭 다운 메뉴에 데이터가 다시 채워 져야하기 때문에 모든 것이 엉망이됩니다. 각보기 모델마다 다른 드롭 다운 목록이 있기 때문에 이는 약간의 문제입니다. 솔루션

을 시도

나는 각 뷰 모델을 생각 갈 수 및 데이터베이스에서 도메인 모델에 해당한다 얻을하지만 약 30 필드가있을 수 있습니다 특히 이후 (매우 효율적으로하지 않는 것 하나 하나가있을 수 있습니다

다른 드롭 다운 목록!).

양식 유효성 검사가 실패 할 경우에도 드롭 다운이 지속될 수 있습니까?

+0

보기에 30 개의 드롭 다운이 있습니까? !!! – Shyju

+0

@Shyju 가능할 수도 있습니다. 지금은 약 5-10. 각보기 모델이 드롭 다운 목록을 표시해야하는 것은 아니지만 최악의 경우를 계획하려고합니다. –

답변

1

양식 유효성 검사에 실패하면 드롭 다운을 유지할 수 있습니까?

아무 것도 내장되어 있지 않습니다. 한 가지 가능성은 Cache에 매번 발생하는 것을 피하기 위해 데이터베이스 호출의 결과입니다. 따라서 캐시에서 목록을 반환하거나 캐시하지 않는 경우 결과 목록을 캐시에 저장하고 결과를 반환하는 메서드 만 있으면됩니다. 그런 다음 유효성 검사 오류가 발생하면 해당 메서드를 호출하여 드롭 다운 목록을 다시 채 웁니다. 특히 값이 자주 변경되지 않는 드롭 다운 목록의 경우 간단하고 효과적인 방법입니다.

+0

그래, 유일한 문제는 ViewModel에 DomainModel로 갈 때 매핑 코드의 드롭 다운 목록을 채우는 것입니다. 디자인 관점에서 AutoMapping 코드의 드롭 다운을 채우는 것은 나쁜 생각입니까? 아니면 컨트롤러의 책임입니까? –

+0

아니요, 매핑 코드에서 드롭 다운 목록을 채우는 것은 좋지 않습니다. 그것은 올바른 방법입니다. 컨트롤러에서 매핑 방법을 호출 할 때 컨트롤러에서 검색 한 도메인 모델의 캐시 된 버전을 전달한다는 것입니다. –

관련 문제