以下の追加/編集コードは、インデックス アクションにリダイレクトする必要がありますが、そうではないようです。同じ状態のままです。
更新関数が実行されます(デバッグで確認しました)。ダイアログが表示されずにインデックスビューが返され、ダイアログがそのまま残り、テーブル内のデータが更新されない時点で更新データが返されます。
誰が何が悪いのか知っていますか?私もキャプチャを実行しましたが、そこには何も表示されず、ビューが返されないようです:
[HttpPost]
public ActionResult AddEditRecord(tblEquipment Equipment, string cmd)
{
if (ModelState.IsValid)
{
switch (cmd)
{
case "Add":
try
{
db.tblEquipments.Add(Equipment);
db.SaveChanges();
return RedirectToAction("Index");
}
catch { }
break;
case "Update":
try
{
tblEquipment Item = db.tblEquipments.Where(m => m.ID == Equipment.ID).FirstOrDefault();
if (Item != null)
{
Item.AssetNo = Equipment.AssetNo;
Item.MachineName = Equipment.MachineName;
db.SaveChanges();
}
return RedirectToAction("Index");
}
catch { }
break;
}
}
if (Request.IsAjaxRequest())
{
return PartialView("_AddEdit", Equipment);
}
else
{
return View("AddEdit", Equipment);
}
}
}
編集: 関数の最初 (以下) に return を配置しましたが、それを無視してテーブルを更新しました!
public ActionResult AddEditRecord(tblEquipment Equipment, string cmd)
{
return RedirectToAction("Index");
if (ModelState.IsValid)
EDIT 2:わかりました、それは ajax の問題かもしれません。
この質問を見ると
私の chstml は以下のフォームを生成します。それに return false を追加する必要がありますか? CSHTML
@using (Ajax.BeginForm("AddEditRecord", "UserEquipment", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "equipmentDialog" }))
HTML生成
<form id="form0" action="/UserEquipment/AddEditRecord/752" method="post" data-ajax-update="#equipmentDialog" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true" novalidate="novalidate" jQuery18206614934889497519="43">