大部份都會設計刪Master時Detail也順便刪
依需求所以做個不一樣的
如果Detail是有資料時就提示不能刪除Master
這樣好像讓資料更安全點
使用TempData來紀錄錯誤的訊息
為何用TempData因為他只會被使用一次
所以在post錯誤時傳給Get一次顯示
public ActionResult Delete(short? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } //重點在這裡接收後顯示錯誤 if (TempData["CustomError"] != null) { ModelState.AddModelError(string.Empty, TempData["CustomError"].ToString()); } //Account account = db.Account.Find(id); var query = from u in db.Tab where u.TabID == id; if (query == null) { return HttpNotFound(); } return View(query); } [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(short? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } string Sql = " TabID == @0"; var query1 = (from u in db.TabColumn.Where(Sql, id) select u).ToList(); if (query1.Count() > 0) { //有錯時丟給Get顯示 TempData["CustomError"] = "頁籤內有欄位所以不可刪除"; return RedirectToAction("Delete",null, id); } Tab query = db.Tab.Find(id); db.Tab.Remove(query); db.SaveChanges(); return RedirectToAction("Index"); }在View裡記得加以下才會顯喔
@Html.ValidationSummary(true)參考網址