2013-08-02 1 views
0

많은 정보를 수집하기 위해 일련의보기를 만드는 중입니다. 나는 질문을 유형별로 정리 한 여러 페이지에 걸쳐이 정보를 나누었 기 때문에 세트를 말합니다. 사용자가 원하는대로 데이터를 남기고 추가, 제거 및 업데이트 할 수 있기를 원하지만 변경 사항을 취소 할 수 있어야합니다. 충분히 단순 해 보입니다.ASP.NET - 여러 페이지에서 저장되지 않은 모델 상태 유지하기

그러나 코드 관점에서이를 개념화하면 문제가 발생합니다.

처음에는 여러 페이지에 걸쳐 모델을 보존하려고했습니다. 따라서 나는 그들이 가지고있는 단계에 따라 다른 뷰로 리다이렉트하고 컨트롤러가 구할 때까지 모델을 전달하는 컨트롤러를 갖게 될 것입니다. 그러나 숨겨진 필드에서 현재 작업하지 않는 모든 정보를 저장하지 않으면 내가보기에서 돌아와 다음 단계로 이동하는 모델이 절반 비어 있습니다.

그런 다음 세션 변수 작업을 고려했습니다. 세션 변수를 지우기 위해 취소 버튼을 클릭하지 않고 "뒤로"버튼을 누르거나 "워크 플로우"를 남겨두면 사용자가 동일한 객체를 다시 열어서 변경 사항이 그대로 남아있을 수 있다고 생각했습니다.

나는 이것을하는 우아한 방법을 정말로 보지 못합니다. 이 ASP.NET \ MVC 경험 부족 내 가정합니다.

+0

이것은 세션 사용에 적합한 후보로 들립니다. 너무 오래 살아있는 데이터에 대해 걱정할 경우 세션 길이를 더 낮게 설정할 수 있습니다. –

+0

우리도 비슷한 프로젝트를했다. 데이터를 데이터베이스 테이블에 저장했습니다. 사용자가 최종 제출을 누르면 해당 테이블로 이동하고 스테이징 테이블의 데이터가 삭제됩니다. 전에 세션을 사용했습니다. 그러나 사용자 수가 늘어남에 따라 성능 문제가있었습니다. –

답변

0

우리는 내가 일하는 곳과 마법사 유형의 인터페이스가있는 곳에서 비슷한 일을하고 있습니다. 각 단계는 자체보기입니다. 현재 세션에서 단계간에 최상위 모델을 저장하도록 설정했지만 일시적인 문제입니다. 세션 오버 헤드 (상태 서버의 라이프 사이클 및 네트워크 트래픽 요청)를 피하기 위해 곧 최상위 모델을 JSON으로 데이터베이스 테이블 (사용자의 키와 함께)로 유지하도록 전환 할 예정입니다. 앞으로는 사용자의 더 쉬운 쿼리 /보고를 위해 모델의 데이터에 대한 강력한 유형의 저장소 테이블을 구축 할 수 있습니다. 또한 데이터의 수명을 제어 할 수 있으며 사용자는 다음 번에 로그인 할 때 중단 된 지점에서 계속할 수 있습니다. MVC 순수 주의자들은 ASP.net 세션 상태를 사용하지 않는다고 말하는 것 같지만 정확히 왜 그런지는 모르겠습니다. 세션을 사용하면 더 이상 REST-ful이 아닌 MVC! = REST가 될 수 있기 때문일 수 있습니다. 짧은 시간에 세션 상태를 활성화하고 데이터를 던지면 더 빠르게 처리 할 수 ​​있습니다. 우리 팀이 계획하고있는 것처럼 언제든지 나중에 변경할 수 있습니다. 여기 실제 답변은 비즈니스 요구 사항에 따라 다릅니다. 어쨌든, 잘하면이 질문에 유용한 것을 추가합니다.

관련 문제