オブジェクトのリストと、各オブジェクトの横に Ajax.action の削除リンクを表示する次のインデックス ビューがあります。
<legend>@Model.Where(d => d.VisitStatu.Description.ToUpper().Equals("ASSINGED")).Count() @ViewBag.subtitle</legend>
<table>
<tr>
<th>Patient Full Name </th>
<th>Created BY</th>
<th></th>
</tr>
@foreach (var item in Model.Where(d => d.VisitStatu.Description.ToUpper().Equals("ASSINGED")))
{
<tr id = @item.VisitID>
<td>@Html.DisplayFor(modelItem => item.Patient.FullName)</td>
<td>@Html.DisplayFor(modelItem => item.CreatedBy)</td>
<td>@Ajax.ActionLink("Delete",
"Delete", "Visit",
new { id = item.VisitID },
new AjaxOptions
{
HttpMethod = "Post",
OnSuccess = "deletionconfirmation",
OnFailure = "deletionerror"
}
</td> </tr>
ここで、Ajax.actionlink は次のポスト アクション メソッドを呼び出します:-
[HttpPost]
public ActionResult Delete(int id)
{ try
{ var v = repository.GetVisit(id);
if (!(v.Editable(User.Identity.Name)))
{return View("NotFound"); }
repository.DeleteVisit(v);
repository.Save();
return Json(new { IsSuccess = "True", id = id, description = v.Date.ToString() }, JsonRequestBehavior.AllowGet);
}
catch (DbUpdateConcurrencyException)
{
return Json(new { IsSuccess = "False" }, JsonRequestBehavior.AllowGet);
}
catch (OptimisticConcurrencyException)
{
return Json(new { IsSuccess = "False" }, JsonRequestBehavior.AllowGet);
}}
しかし、現在、ユーザーが削除リンクをクリックし、レコードが別のユーザーによって変更された場合DbUpdateConcurrencyException
、削除アクションメソッドにタイムスタンプを渡していないため、no が発生します...そのため、タイムスタンプ値をajax.actionlink を削除しますか? // オブジェクトに既にタイムスタンプ プロパティが含まれていることを示します。ブラジル