将确认页面上的数据发回控制器

时间:2017-09-28 17:47:48

标签: c# jquery asp.net asp.net-mvc

我在这里有一个有模型的cshtml。此页面基本上是一个确认页面,用户可以在继续之前验证所有键入的信息是否正确。

我有一个链接按钮(下面的代码中没有显示),它将执行ajax回调到我的控制器并将@Model中的所有数据保存到我的数据库

我现在正在做的是手动重新创建json对象,方法是循环遍历HTML表格中的行,并使用$ .post <提取我发回给控制器的所有相关数据。 / p>

有更高效/优雅的方法吗?

在这种情况下,我有一个显示不可编辑数据的确认页面,然后将其保存到我的数据库中的最佳做法是什么

@model RegistrationViewModels.VerificationViewModel

<div class="table-responsive">
    <table class="table table-bordered">
        <colgroup>
            <col class="col-xs-5">
            <col class="col-xs-1">
        </colgroup>
        <tbody>
            <tr class="active">
                <td colspan="2">Rooms</td>
            </tr>
            @foreach (var room in Model.Rooms)
            {
                <tr>
                    <td>
                        @room.RoomType
                    </td>
                    <td>@String.Format("{0:C}", room.Price)</td>
                </tr>
            }
            <tr class="active">
                <td colspan="2">Particulars</td>
            </tr>
            @foreach (var occupant in Model.Occupants)
            {
                <tr>
                    <td>
                        @occupant.FirstName
                    </td>
                    <td></td>
                </tr>
            }

        </tbody>
    </table>
</div>

2 个答案:

答案 0 :(得分:0)

您可以做的是将POST上的数据传递给Get操作,然后对该操作接受POST:

[HttpPost]
public ActionResult Create(Reservation _data)
{
  //do validation ...

  //now send the data to Confirm action to show the view that user can confirm. Pass the data along.
  return RedirectToAction("Confirm", "[Controller]", new {@_data = _data});
}

[HttpGet]
public ActionResult Confirm(Reservation _data)
{
  return View(_data) //no need to use a different model in your verification page. Just don't make the Html fields editable. 
}

[HttpPost]
public ActionResult Confirm(Reservation _data)
{
  //save 
}

答案 1 :(得分:0)

虽然我不是会话使用的粉丝,但总的来说,这实际上是一种可能是最佳方法的情况。将发布的数据保存到会话中,显示包含该数据的页面。然后,一旦用户确认,您可以从会话中读取数据(而不是必须重新发布),并将其保存到数据库中。