0

以下の追加/編集コードは、インデックス アクションにリダイレクトする必要がありますが、そうではないようです。同じ状態のままです。

更新関数が実行されます(デバッグで確認しました)。ダイアログが表示されずにインデックスビューが返され、ダイアログがそのまま残り、テーブル内のデータが更新されない時点で更新データが返されます。

誰が何が悪いのか知っていますか?私もキャプチャを実行しましたが、そこには何も表示されず、ビューが返されないようです:

[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">
4

1 に答える 1

2

ソート!

以下のように ajax オプションを変更したところ、正常に動作するようになりました

<script>
    function onSuccess() {
        window.location.href = '@Url.Action("Index","UserEquipment")'
    }
</script>


@using (Ajax.BeginForm("AddEditRecord", "UserEquipment", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "equipmentDialog", OnSuccess="onSuccess()" }))
于 2013-07-18T10:59:31.797 に答える