【发布时间】:2016-10-20 17:21:35
【问题描述】:
我在使用 Ajax 更新 PartialView 中的记录时遇到问题。我有 View with call @Html.Action ("_PartialView", "Controller", new { id = OrderId }) 和 PartialView with Ajax Form。
@model IEnumerable<WebMartin.Models.OrderExecutionRemark>
@{
AjaxOptions ajaxOpts = new AjaxOptions
{
UpdateTargetId = "orderdisplayremark",
Url = Url.Action("OrderRemarkDelete", "OrderExecution"),
HttpMethod = "POST"
};
}
@ViewBag.Po
@if (Model.Any())
{
<table id="orderdisplayremark">
<thead>
<tr>
<th>Worker</th>
<th>Date</th>
<th>Remark</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var remark in Model)
{
<tr>
<td>@remark.UserName</td>
<td>@remark.OrderRemarkDate.ToString("yyyy-MM-dd")</td>
<td>@remark.OrderRemarkText</td>
<td>
@using (Ajax.BeginForm(ajaxOpts))
{
@Html.Hidden("remarkid", remark.OrderRemarkId)
<input type="submit" value="Delete" />
}
</td>
</tr>
}
</tbody>
</table>
}
和控制器
[HttpPost]
public PartialViewResult OrderRemarkDelete(int remarkid)
{
OrderExecutionRemark oer = db.OrderExecutionRemarks.Find(remarkid);
/* db.OrderExecutionRemarks.Remove(oer);
db.SaveChanges(); */
ViewBag.Po = oer.OrderRemarkId;
return PartialView("_OERemarkPartial", db.OrderExecutionRemarks.Where(p => p.OrderId == oer.OrderId).ToList());
}
[HttpGet]
[ChildActionOnly]
public PartialViewResult _OERemarkPartial(int id = 0)
{
return PartialView(db.OrderExecutionRemarks.Where(p => p.OrderId == id).ToList());
}
问题
更新仅在第一次有效,之后 - 不是。在再次按下“删除”按钮之前,我必须刷新页面。怎么解决?我以为我会使用 RedirectToAction(View),但我在三个不同的视图中使用这个 PartialView。
在 PartialView 中显示由工人下达的订单备注。如您所见,每一行包含工人姓名、日期、备注文本和传递 id 备注以删除操作的表单。如果我有很多评论(很多行)并且在第一次发布(删除)评论之后,应该用记录更新表,当我想删除下一条评论时,我不能这样做。如果我想删除下一条评论,我必须先按 F5(刷新页面)。哪里错了?
提前感谢您的所有回答。
【问题讨论】:
标签: html ajax asp.net-mvc