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