0

コントローラでは、Create / Edit ActionResultのエラーは、ビューに表示されているエラーを含むtry-catchブロックで処理できます(ModelState.AddModelErrorを介して)。

現在、DeleteConfirmed ActionResultと同様のことを試みていますが、ビューページにエラーは表示されません。削除しようとしているテーブルは、外部キーフィールド値の削除について不平を言っているはずです。

別の方法でRedirectToActionを追加する必要がありますか、それとも何か他のものを追加する必要がありますか?

 [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            try
            {
                StatusList statuslist = db.Status.Find(id);
                db.Status.Remove(statuslist);
                db.SaveChanges();
            }
            catch (DataException dex)
            {
                ModelState.AddModelError("", dex.Message);
                return RedirectToAction("Delete");

            }
                return RedirectToAction("Index");

        }
4

1 に答える 1

1

リダイレクトを行うと、ModelStateが失われます。したがって、2つのことを行うことができます。

  1. TempData ["myerrorkey"] = dex.Messageにエラーメッセージを設定すると、メッセージは1回のリダイレクトで「存続」します
  2. メソッドを変更し、エラーが発生した場合は、リダイレクト中にモデルの状態が消去されないようにビューを返します

個人的には最初のものを選びます。したがって、削除の場合にTempDataを実装して、インデックスページですべてがスムーズに進んだことをユーザーに通知することも考えられます。

于 2012-04-04T20:11:50.470 に答える