0

モデルを最初のステップから最後のステップまで保持したいウィザードタイプのフォームがあります。

これが今のやり方ですが、モデルをステップ3から4に保つことができないようです。

[HttpPost]
public ActionResult Register(MemberViewModel model)
{
    var mobile = model.Mobile;
    var xml = MemberclubHelper.CreateVerificationTokenXML(mobile, "47");
    MemberclubHelper.SendVerificationToken(xml);
    return RedirectToAction("RegisterStep1", new { mobile = mobile });
}

public ActionResult RegisterStep1(string mobile)
{
    var model = new MemberViewModel();
    model.Mobile = mobile;
    return View("Register/Step1", model);
}

[HttpPost]
public ActionResult RegisterStep1(MemberViewModel model)
{
    var interests = (from interest in model.Interests where interest.isChecked select interest.value).ToList();
    var passing = (from pass in model.Passing where pass.isChecked select pass.value).ToList();

    var xml = MemberclubHelper.CreateMemberProfileXML(model.Mobile, model.FirstName, model.FirstName,
        model.Email1, model.Zipcode, model.SelectedKid1, model.SelectedKid2, model.SelectedKid3,
        model.Gender.ToString(), interests, passing);
    model.XmlToSend = xml;
    if (xml.Contains("error"))
    {
        model.ErrorMessage = xml;
        return View("Register/Step1", model);
    }

    return View("Register/Step2", model);
}

[HttpPost]
public ActionResult RegisterStep2(MemberViewModel model)
{
    var result = MemberclubHelper.SendCreateUser(model.XmlToSend, model.Password);
    if (result.Contains("error"))
    {
        model.ErrorMessage = result;
        return View("Register/Step2", model);
    }

    else
    {
        return View("Register/Finished");
    }
}
4

1 に答える 1

0

ステップごとに個別のビュー モデル (つまり、MemberViewModelStep1) を作成することで、より良いサービスを提供できると思います。私には、非表示の入力または他のメカニズムを介してステップ間でその状態の多くを運ばない限り、MemberViewModel プロパティの一部のみが各ステップで設定されるように思えます。

または、JavaScript を使用してステップ間でその状態を構築し、完全に設定された MemberViewModel を使用して単一の投稿を送信することを検討しましたか?

于 2013-02-03T19:45:08.617 に答える