今天來了解Scaffold產生的Edit
Edit其實乍看之下與Create一模一樣,一樣有兩個動作方法,GET負責顯示資料表單,POST負責更新資料庫
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Mmeber members = db.Member.Find(id);
if (members == null)
{
return HttpNotFound();
}
return View(members);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "id,姓名,Email,內容")] Mmeber members)
{
if (ModelState.IsValid)
{
db.Entry(members).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(members);
}
HttpStatusCodeResult(HttpStatusCode.BadRequest);
這一段代碼意思是如果傳來的id是null,就回傳一個BadRequest的網頁狀態碼(400)
return HttpNotFound();
這一段代碼意思是如果在資料庫找不到對應的id就回傳一個HttpNotFound()方法,伺服器會回傳一個404找不到網頁的要求
[ValidateAntiForgeryToken]
這是一個屬性,用來預防CSRF攻擊
[Bind(Include = "id,姓名,Email,內容")] Mmeber members
這一段代碼則是用來做資料模型綁定,Include裡的代表我們要取得的資料欄位
if (ModelState.IsValid)
這一段則是對傳來的資料做模型驗證
db.Entry(members).State = EntityState.Modified;
這一段是對members的實體更改狀態為已修改,當呼叫了SaveChanges 時,所有的屬性值都會傳送至資料庫
View的部分跟Create大同小異,可以參考我第九天發布的文章