문제

당사 사이트에는 여러 페이지에 다양한 데이터가 수집되는 여러 "마법사"가 있으며 마지막 단계까지 데이터베이스에 커밋 할 수 없습니다.

ASP.NET MVC를 사용하여 이와 같은 마법사를 만드는 가장/올바른 방법은 무엇입니까?

편집 : 내 상사는 이제 "JavaScript 없음"이라고 말하고 있습니다. 그 제한을 해결하는 방법에 대한 생각이 있습니까?

도움이 되었습니까?

해결책

나는 최고의/올바른 방법이 있다고 생각하지 않지만, 내가하는 방식은 ...

각 마법사는 자체 페이지를 얻습니다. 각 단계는 자체 Div를 얻습니다. 모든 단계는 동일한 형태입니다.

이전/다음 버튼은 본질적으로 프로세스의 각 단계에서 DIV를 숨기거나 표시합니다. 마지막 단계의 제출 버튼은 전체 양식을 제출합니다. jQuery를 사용하여 이것을 구현하는 것은 매우 사소한 일이며, 모든 마법사 단계가 단일 뷰 페이지에 있기 때문에 유지하기가 쉽습니다.

컨트롤러 측면에는보기를위한 양식을 준비하는 httpverbs.get 버전과 httpverbs.post 버전이있는 두 가지 컨트롤러 메소드가 있습니다. FormsResult를 사용하여 사용자의 답변을 제출하는 데 필요한 정보를 얻으려면 httpverbs.post 버전이 있습니다. 저장/기타 프로세스에.


와우, 당신의 상사가 악취가납니다.

이 대답은 거의 우아하게 작동합니다. JavaScript가 장애가있는 ****** (예, 둘 다). CSS를 통해 차기 편지 버튼을 숨기고 JavaScript 코드에서 해제되지 않도록 조정할 수 있습니다. 이런 식으로 JavaScript를 가진 사람들은 마법사를보고 JavaScript가없는 사람들은 전체 양식 (Next/Prev 버튼없이)을 볼 수 있습니다.

다른 옵션은 마법사의 각 단계에 대한보기를 만드는 것입니다. 세션에 양식의 중간 결과를 저장할 수 있습니다. 이런 식으로 구현하는 데 많은 시간과 노력이 필요할 것입니다. 즉, 점심 시간에 약 20 분의 노력으로 JavaScript 경로가 얼마나 쉬운지를 시연 할 때 상사의 초과 근무를 짜낼 수 있습니다.

다른 팁

JavaScript를 사용할 수없는 경우 컨트롤러의 메소드와 함께 각 단계를 뷰를 만들고 데이터베이스에 제출할 준비가 될 때까지 세션에 데이터를 유지하십시오.

ActionLink htmlHelper 메소드를 사용하여 다음 및 이전 버튼을 만들 수 있습니다.

또 다른 방법은 마법사를 사용하여 건축하는 불완전한 객체를 데이터베이스에 저장하고 기본 키를 마법사의 다음 단계로 전달하는 것입니다. 이것은 데이터베이스 필드 중 일부를 무효화 할 수 있어야한다는 것을 알고 있지만 쿠키에 기본 키를 저장하고 사용자가 나중에 마법사로 돌아올 수 있다는 이점이 추가됩니다. 이 옵션에는 JavaScript 또는 세션 상태가 필요하지 않습니다.

다른 패널을 모두 클라이언트 측로 만드십시오 ... 모두 같은 형태로 ... 그리고 최종 제출 버튼을 누르면 모든 값을 동시에 게시 할 수 있습니다.

JavaScript를 사용할 수없고 세션 변수와 함께 서버 리소스를 사용하지 않으려면 다른 단계에서 입력되는 값을 직렬화하고 손익분I를 제외하고 숨겨진 입력 필드를 사용하여 앞뒤로 전달할 수도 있습니다. ASP.NET WebForms의 ViewState와 비슷합니다.

로그인 마법사를 모아서 블로그에 그 뒤에 아이디어를 문서화하면 도움이됩니다. 링크 텍스트

Nuget에서 사용 가능한 간단한 구성 요소 MVCWizard.wizard를 사용할 수 있습니다. WizardController를 사용하면 부분보기를 사용하여 마법사를 만들 수 있습니다. AutowizardController도 전체 마법사를 단일보기로 렌더링합니다. 이 모든 구성 요소는 세션에서 작동하여 모델 상태를 저장합니다.

이 질문에는 매우 간단하고 유연하며 확장 가능한 방법이 있습니다. ASP.NET MVC에서 내 StateFull 인터레이스 모달 대화 상자를 단순화하는 방법

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top