3

私はこの本当に重要なリスのアプリケーションを開発しています。

リスがデータベースに追加されるウィザードがあります。

したがって、このウィザードには3つの画面があるとします。

  1. リスの名前の詳細
  2. 身長と体重
  3. ナッツ収納

したがって、ウィザードの各ステップで、詳細をデータベースに保存したいと思います。

身長と体重のビューは次のようになります。

@model HeightWeightViewModel
@{
    ViewBag.Title = "Height and weight";
}

<h2>Height and weight</h2>

@using (Html.BeginForm()) {

    <h3>Height</h3>
    <div>
        @Html.EditorFor(model => model.Squirrel.Height)
    </div>

    <h3>Weight</h3>
    <div>
        @Html.EditorFor(model => model.Squirrel.Weight)
    </div>
    <input type="submit" value="Previous" />
    <input type="submit" value="Next" />
}

したがって、[前へ]ボタンと[次へ]ボタンでこれらの詳細が保存されることを期待しています。保存中の[前へ]ボタンをクリックすると、ユーザーはリスの名前の詳細ページにも移動します。Nextは保存し、ユーザーをナットストレージページに移動します。

次のボタンを使用して機能しました:

public ActionResult Edit(SquirrelViewModel squirrelViewModel)
        {
            _unitOfWork.SaveHeightWeight(squirrelViewModel);

            return RedirectToAction("Edit", "NutStorage", new { id = squirrelViewModel.Squirrel.Id });
        }

したがって、[次へ]ボタンは詳細を保存し、ユーザーをNutStorageページに送ります。

[前へ]ボタンは[次へ]と同じように機能しますが、実際には、保存後にユーザーをウィザードの最初のステップに移動させたいと考えています。

これを行う方法がわかりません。以前に投稿する別の方法はありますか?

これを実装する方法を想像することはできません。

送信ボタンの代わりにActionLinksを使用する必要があるかもしれませんが、保存する詳細は投稿されません。

次の機能を使用したまま、前のボタンを取得してユーザーを保存し、ウィザードの最初のページに移動する方法を誰かが提案できますか?

4

1 に答える 1

10

送信ボタンの名前を設定できます。

<input type="submit" name="direction" value="Previous" />
<input type="submit" name="direction" value="Next" />

次に、その名前をコントローラーアクションのパラメーターとして追加し、その値をテストして、何をすべきかを判断します。

public ActionResult Edit(SquirrelViewModel squirrelViewModel, string direction)
{
    _unitOfWork.SaveHeightWeight(squirrelViewModel);

    if (direction == "Next")
        return RedirectToAction("Edit", "NutStorage", new { id = squirrelViewModel.Squirrel.Id });
    if (direction == "Previous")
        return RedirectToAction("Edit", "SquirrelName", new { id = squirrelViewModel.Squirrel.Id });
    return View();
}
于 2012-06-20T21:12:46.270 に答える