大部份都會設計刪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)參考網址