[ASP.NET Core MVC Workshop#04] การ Delete ข้อมูลใน Database

Jedsada Saengow
JED-NG
Published in
2 min readAug 28, 2018

ต่อไปเราจะทำการ Delete ข้อมูล โดยทำการด้วยปุ่ม Delete แน่นอนว่าจะใช้ Source code จากบทความก่อนหน้า [ASP.NET Core MVC Workshop#03] การทำ Form พร้อม Validate และการ Insert ข้อมูลลง Database หรือจะ Download ได้ที่ Github เช่นเคยครับ

ทำความเข้าใจ Flow การ Delete ของบทความนี้

การรับส่งข้อมูลจะเป็นคร่าว ๆ ดังนี้

ก็คือ เมื่อคลิกที่ปุ่ม Delete จะทำการ Set ค่า Id ด้วย JavaScript ให้กับ Input ตัวหนึ่งที่จะสร้างไว้ จากนั้นก็สั่งให้ Form ทำการ Submit

สร้าง Method สำหรับการ Delete ข้อมูล

ให้เปิดไฟล์ TrainingDotNetCoreMVC/Controllers/MovieController.cs ขึ้นมา และเพิ่ม Method ที่ชื่อว่า Delete ดังภาพ

จะได้ Code ทั้งหมดในไฟล์ดังกล่าวเป็นดังนี้

Method นี้จะรับค่า id ที่จะส่งมาจากหน้า View จากนั้นก็ Find หา Movie ที่มี id ดังกล่าว และสั่งให้มันลบ Movie นั้นซะ

แก้ไขหน้า View และเพิ่มปุ่ม Delete เรียกใช้ JavaScript event

ต่อไปให้ท่านผู้อ่านแก้ไข Code ในไฟล์ TrainingDotNetCoreMVC/Views/Movie/Index.cshtml ให้เป็นตามนี้

โดยสิ่งที่เพิ่มเข้ามาคือ

  • Form: เพิ่ม Form Method Post เพื่อสำหรับส่งค่าไปที่ Controller
  • <td class="item-id">: เพิ่ม class ที่ชื่อว่า item-id
  • ปุ่ม Delete: สำหรับการคลิกเพื่อ Set ค่าให้ Input type=Hidden โดย Set ผ่าน JavaScript event
  • JavaScript event: ในที่นี้คือ การ Bind ให้ปุ่มที่มี class = ".btn-danger" เมื่อคลิกแล้วจะทำ Function
    ซึ่ง Function ที่ว่า ก็คือเช็ค Confirm ถ้าตอบ Yes ก็จะเก็บค่า id ใน Row ของ ปุ่ม Delete นั้น ๆ มา Set ให้ Input type = Hidden อีกที
    และสุดท้ายสั่งให้ form ทำการ Submit
  • Input type=Hidden: เตรียม Input ที่เป็น Hidden สำหรับการรับค่า id ของ Row นั้น ๆ จากปุ่ม Delete

ทดสอบ

จากนั้นให้ลอง Run และทดสอบดู ก็จะได้ผลลัพธ์ว่าสามารถ Delete ข้อมูลได้

จบเรียบร้อยสำหรับการ Delete ก็ถือว่าไม่ค่อยเยอะ และไม่ค่อยปวดหัวเท่าไหร่ ขอบคุณท่านผู้อ่านที่อ่านจนจบ แล้วพบกันอีกครั้งใน #05 (Last) นะครับ

ส่วน Source code ของบทความนี้ สามารถ Download ได้ที่ลิงค์นี้ครับ

หากท่านผู้อ่านมีคำถามหรือข้อสงสัย หรือมีคำแนะนำ ติชม สามารถติดต่อผู้เขียนได้เลยครับ

Reference

--

--