2012-04-11 1 views
1

mvc3에서 다단계 양식 (마법사)을 사용할 수 있습니까? 을 사용하면 간단하게 만들 수 있습니다. 제품을 수정하는 2 단계 양식.mvc3 다단계 양식 (마법사)

가능한 해결책 : 다른 양식의 동일한 viewbag.Product를 사용하십시오 (하나에서 다른 것으로 전달하십시오).

감사합니다.

+1

가능한 복제본 [asp.net mvc (분할 된 뷰 모델, 단일 모델)에서 다중 단계 등록 프로세스 문제] (http://stackoverflow.com/questions/6402628/multi-step-registration-process-issues-in -asp-net-mvc-split-viewmodels-sing) –

+0

[blog] (http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx) – Dmitry

+0

가능한 복제본 [모든 샘플 MVC3 마법사 응용 프로그램 (다중 단계) (NO JQUERY)] (http://stackoverflow.com/questions/8054640/any-sample-mvc3-wizard-apps-multi-step-no-jquery) – jgauffin

답변

1

마법사는 단순한 모델을 처리하는 간단한 단계입니다. 마법사 용으로 여러 모델을 만들 필요가 없습니다. 당신이해야 할 일은 하나의 모델을 만들고 그것을 하나의 컨트롤러에서 액션들 사이에 전달하는 것입니다.

public class MyModel 
{ 
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid Id { get; set }; 
    public string StepOneData { get; set; } 
    public string StepTwoData { get; set; } 
} 

위 coed는 어리 석습니다. 그래서 여기에 입력란을 바꾸십시오. 그런 다음 마법사를 시작하는 간단한 작업부터 시작합니다.

public ActionResult WizardStep1() 
    { 
     return View(new MyModel()); 
    } 

이 (이다 면도기를 사용하는 경우). 우리는 단지 다른 행동에 게시물을 리디렉션됩니다 원하는 경우 뷰 "WizardStep1.cshtml가. 당신은 템플릿 마법사를 만들 수 있습니다 호출합니다.

<WizardStep1.cshtml> 
@using (Html.BeginForm("WizardStep2", "MyWizard")) { 
그래서 우리는 우리의 마법사에게 보낼 경우 우리의 모델이 유효한 경우 우리는 확인이 작업에서 WizardStep2 액션

[HttpPost] 
    public ActionResult WizardStep2(MyModel myModel) 
    { 
     return ModelState.IsValid ? View(myModel) : View("WizardStep1", myModel); 
    } 

을하고,

노트의 문제는 우리가 다른 행동이 게시 될 것입니다 tep2.cshtml 그렇지 않으면 검증 오류가있는 단계 1로 다시 보냅니다. 각 단계에서 다음 단계로 보내고 단계를 확인하고 계속 진행합니다. 이제 몇몇 정통한 개발자들은 단계들 사이에서 [필수] 속성이나 다른 데이터 주석을 사용하면이 단계들 사이를 이동할 수 없다고 말할 수 있습니다. 그리고 당신이 옳을 것입니다, 그래서 아직 점검되지 않은 항목에 대한 오류를 제거하십시오. 아래처럼.

[HttpPost] 
    public ActionResult WizardStep3(MyModel myModel) 
    { 
     foreach (var error in ModelState["StepTwoData"].Errors) 
     { 
      ModelState["StepTwoData"].Errors.Remove(error); 
     } 

마지막으로 모델을 데이터 저장소에 한 번 저장합니다. 또한 마법사를 시작하지만 완료되지 않아 불완전한 데이터를 데이터베이스에 저장하지 못하게합니다.

이전에 언급 한 방법보다 마법사를 훨씬 쉽게 사용하고 유지 관리 할 수있는 방법을 찾았 으면합니다.

읽어 주셔서 감사합니다.