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 将保存并将用户带到坚果存储页面。

我让 Next 按钮使用:

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

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

因此 Next 按钮保存详细信息并将用户发送到 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 回答