1

私はこれに1日半頭を悩ませてきました、そして私は困惑しています。

Mvc3サイトがあり、ウィザード(マルチステップフォーム)を実装しています。

最初のページはコントローラーからビューモデルを受け取り、これはJavascriptにシリアル化されます。

以下のpostメソッドにすべてうまくいきます:

$('#nextButton').click(function (evt) {
    // Validate the form, if validation passes, submit the form.
    evt.preventDefault();
    var $form = $('form');
    if ($form.valid()) {
        var viewModel = JSON.stringify(model);
        $.post(
            "SampleSubmission/Home/Index",
            { 'viewModel': viewModel }
        );
    }
});

次に、以下のコントローラーアクションにヒットします。

    [HttpPost]
    public ActionResult Index(string viewModel)
    {
        _viewModel = JsonConvert.DeserializeObject<SampleSubmissionViewModel>(viewModel);

        // Save Model to Session.
        Session[SessionViewModel] = _viewModel;

        // If platform Id != null, workflow has already begun.
        if (ModelState.IsValid)
        {
            return RedirectToAction("SystemDetail");
        }
        return View(_viewModel);
    }

    [HttpGet]
    public ActionResult SystemDetail()
    {
        // Page 2- System Details.
        return View(_viewModel);
    }

リダイレクトは機能しますが、2番目のページは表示されません。

Fiddlerを見ると、ページが正常に返されます。

誰かが言う前に、それはイントラネットサイトなので、私はセッションにモデルを保存しています:-)

2ページ目を表示する方法について何かアイデアはありますか?

乾杯、

ジュール

4

2 に答える 2

1

すべてのメモを1つの回答にマージします。

ajaxアクションを呼び出してウィザードを作成する場合、サーバーの応答を処理し、それを何らかの方法でDOMにアタッチすることが重要です。完全なソリューションを投稿してくれた@pilavdziceに感謝します。

ただし、ウィザードを作成するこの方法は、JavaScriptとimhoの複雑さを維持せずに使用することはできず、検証はより複雑になります。

私の経験から、複数のビューを使用し、@ Darin Dimitrovマルチステップ登録プロセスの投稿に記載されている、またはSteven Sanderson MVC2の本に記載されているような単純な投稿を使用するソリューションは、より単純でより堅牢なソリューションです。

于 2012-04-20T16:56:20.053 に答える
0

上記のアンドレアスのコメントは正しいです。

もう少し説明すると、ajaxから返された結果を取得してページに表示するには、成功ハンドラが必要なため、ページには何も表示されません。次のように実行できます。

   $.post(
        "SampleSubmission/Home/Index",
        { 'viewModel': viewModel },
        //onsuccess handler
        function(data) {
             $('#result').html(data);
         };
    );

HTMLページで、次の場合:

<div id="result"></div>

あなたが返すものは何でもそのdivに入れられます。

これを試しても問題が解決しない場合は、行き詰まっている場所を説明してください。さらにサポートさせていただきます。

于 2012-04-19T22:56:15.013 に答える