Pemakaian Try - Catch Untuk Menghandle Transaksi .NET CHSTML
Pemakaian Try - Catch Untuk Menghandle Transaksi .NET CHSTML
com / contoh 10
.NET Contoh 10
Page 1 of 7
© 2017 mztolo.com / contoh 10
Karena data tsb sudah terhapus maka ketika dilakukan tindakan simpan di web browser lain akan timbul
pesan error spt ini.
Page 2 of 7
© 2017 mztolo.com / contoh 10
Sekarang coba dengan data yg lain spt langkah di atas, dan ketika dilakukan perintah simpan akan tampil
pesan error spt di bawah ini, (lebih manusiawi).
Dan benar ketika Anda “Kembali ke Daftar”, Siswa dengan nama “Tolo” memang tdk ada, alias sudah
ada yg menghapus.
Page 3 of 7
© 2017 mztolo.com / contoh 10
Penjelasannya :
Method Create ini mirip dengan method Edit di atas, hanya bedanya kolom ID tdk disertakan di binding
datanya.
Hal ini dikarenakan ID akan otomatis terisi pada saat create data pertama kali.
Bind disini berfungsi sbg filter kolom apa saja yg akan di gunakan dlm proses edit atau create data, dan
memprotek dari usaha-usaha yg dikenal sbg “over-posting” yaitu menambahkan passing data lewat
parameter link web browser.
CSRF pernah dengar ? Cross Site Request Forgery atau bahasa mudahnya aksi pemalsuan
token/tanda/penanda/petunjuk dlm request data di web browser.
Anda pasti tahu maksud link ini : http://localhost/SMA212/Siswa/Details/3 yaitu menampilkan detail
data Siswa dgn ID no 3.
Pada dasarnya link web aplikasi rentan terhadap usaha hacking, yg antara lain dgn metode CSRF tsb.
Dan untuk lebih detil serta bagaimana CSRF bekerja silahkan googling sendiri ya.
Tambahan :
Untuk method Index dan Details tdk ada perubahan dan masih sama dengan koding sebelumnya.
Page 4 of 7
© 2017 mztolo.com / contoh 10
// POST: Siswa/Delete/5
//[HttpPost, ActionName("Delete")]
[HttpPost]
[ValidateAntiForgeryToken]
//public ActionResult DeleteConfirmed(int id)
public ActionResult Delete(int id)
{
try
{
Siswa siswa = db.Siswas.Find(id);
db.Siswas.Remove(siswa);
db.SaveChanges();
}
catch (DataException)
{
return RedirectToAction("Delete", new { id = id, saveChangesError = true });
}
return RedirectToAction("Index");
}
Tambahkan juga skrip berikut ke Views\Siswa\Create.cshtml. (untuk menampilkan pesan error di view)
<h2>Hapus Data</h2>
<p class="error">@ViewBag.ErrorMessage</p>
<h3>Yakin mau menghapus data ini ?</h3>
Page 5 of 7
© 2017 mztolo.com / contoh 10
Penjelasan :
Pada saat user melakukan proses hapus, parameter saveChangesError = false awalnya.
Ketika proses error saveChangesError = true dan pesan ViewBags.ErrorMessage akan ditampilkan di
view.
Selanjutnya user diberikan kesempatan lagi untuk menghapus atau kembali ke daftar Siswa.
Jika Anda perhatikan di method Create, Delete dan Edit atau Update membutuhkan 2 metode tindakan.
Metode pertama GET, memberikan pengguna kesempatan untuk menyetujui atau membatalkan operasi
hapus/ubah/buat baru.
Jika pengguna menyetujuinya, permintaan POST dibuat. Ketika itu terjadi, metode HttpPost pun di
jalankan dan dan kemudian operasi hapus/ubah/buat baru benar-benar dilakukan.
Nama method untuk proses GET dan POST di framework MVC ini boleh sama, dan hal ini justru bagus
karena mengurangi beban atau overloads nama parameter yg dipakai oleh CLR (Common Language
Runtime yaitu komponen virtual mesin .Net yg bertugas menjalankan eksekusi dari aplikasi).
Fungsi try – catch sendiri berguna untuk menangani setiap kesalahan yang mungkin terjadi ketika
database diperbarui.
Jika terjadi kesalahan, metode HttpPost memanggil metode HttpGet, dan passing parameter yang
menunjukkan bahwa kesalahan telah terjadi.
Metode HttpGet kemudian re-display halaman konfirmasi bersama dengan pesan kesalahan, dan
memberikan pengguna kesempatan untuk membatalkan atau mencoba lagi.
Ok, jalankan aplikasi di 2 web browser, hapus data Siswa di salah satu web browser.
Karena data tidak ada (sudah dihapus di web browser lain) maka procedure ini yg akan dijalankan.
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Page 6 of 7
© 2017 mztolo.com / contoh 10
Tambahan :
n=SQLSTRINGCONNECT(a)
dan...
x=SQLDISCONNECT(n)
Terima kasih
Demikian contoh pemakaian try – catch untuk menghandle transaksi.
Jaga perdamaian dan hindari anarkisme, suka .net bukan alasan ntuk membenci bhs program yg lain.
Karena perbedaan itu keniscayaan dan justru jadi alasan kita ntuk lebih saling mengenal.
Terima kasih.
Page 7 of 7