Kamis, 31 Mei 2012

ASP.NET MVC, Guest Book Application (2) (Penggunaan Model)


Selamat berjumpa kembali di blog saya, Post kali ini akan membahas penggunaan model pada aplikasi aspnet mvc. Pada postingan sebelumnya  guestBook (1) sudah membahas bagaimana cara membuat aplikasi web asp mvc. Tetapi pada postingan sebelumnya, belum menggunakan model layer, karena, apalah arti MVC tanpa model layer, bagaimana sayur kurang garam, kurang enak kurang sedap. oke just kidding.

Kita buka project yang telah kita buat pada tutorial sebelumnya. kemudian hal yang kita lakukan adalah membaca basmallah, setelah itu kita tambahkan class baru pada folder models dengan nama GuestBookEntry sebagai model yang akan kita pakai.

Pada class GuestBookEntry kita tulis (sory, template blogger yang baru ga ngedukung syntaks highlighter )

public class SplitString {

     public class GuestBookEntry
    {
        public string  Name { get; set; }
        public string Email { get; set; }
        public string Comments { get; set; }
    }

setelah itu kita ubah inherits pada halaman indeks (letaknya paling atas code indeks) yang tadinya berupa 


<%@ Page Title="" Language="C#" 
MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage" %>;


Menjadi


Code Lengkap
setelah di import model (perhatikan bagian yang diberi highlight)
Jangan lupa merubah code Label menjadi LabelFor dsb agar kita langsung merender dari model secara langsung. dan jangan lupa Meng-Instance GroupEntry Pada Action Index kemudian mengirimkanya ke halaman index

Kemudian kita build ulang dan kita jalankan lagi, hasilnya akan sama seperti pada tutorial pertama.
Bisa kan...

Kalau kita lihat pada halaman Sign, url tersebut masih kita lihat. Hal ini dikarenakan kita meng-Hard Code url, apabila kita merubah struktur url akan menyebabkan break.  Kemudian url tersebut masih tertulis sign padahal kita mendirect ke halaman ThankYou pada controller, hal ini disebabkan karena kita tidak redirect ke sebuah success page, tetapi hanya merender. Kemudian apabila kita refresh halaman, hal ini akan menyebabkamkita memasukan data kembali, yang menyebabkan data dimasukan 2 kali.
kalo direfresh
Untuk memecahkan masalah tersebut kita ganti code pada halaman index dengan menggunakan <%Html.BeginForm()%>  menjadi seperti ini

kemudian coba kita jalankan.
Setelah kita jalankan kita tidak akan bisa memasukan data tersebut, aplikasi hanya kembali ke halaman index. untuk mengatasinya kita tambahkan action seperti ini


Cara lain yang bisa kita gunakan adalah dengan merubah nama action Sign menjadi index, sehingga kita tidak perlu menambahkan action pada BeginForm.
Kita build dan kita jalankan lagi.
Untuk menghilangkan url sign, kita tambahkan [HttpPost] pada action Index yang kedua

Setelah dijalankan maka url berubah menjadi


Apakah telah selesai? apakah aplikasi kita sudah ok? belum, aplikasi kita masih mengirimkan data ketika di refresh, cara untuk mengatasi hal tersebut adalah dengan:
   1. Mem-Post data ke sebuah action
   2. Redirect user ke sebuah action yang berbeda
   3. User browser mendapatkan issue sebuah Get untuk sebuah action yang baru

Kita rubah GuestBookController kita menjadi seperti ini
Kemudian kita build dan kita jalankan lagi. Maka apabila kita submit maka url akan di-direct ke halaman ThankYou bukan sign lagi,


 dan apabila kita refresh maka akan kembali ke halaman awal
kembali ke halaman awal

Sekian untuk post kali ini, sampai jumpa di Post selanjutnya, Semoga Bermanfaat.

3 komentar :

Anonim mengatakan...

koq, saya tidak berhasil ya
errornya :
Compiler Error Message: CS0246: The type or namespace name 'Blog' could not be found (are you missing a using directive or an assembly reference?)

waktu masukin urlnya --> http://localhost:52916/GuestBook
tapi kalo urlnya yg ini berhasil/tanpa error --> http://localhost:52916/GuestBook/Sign

cuma ga ada namanya aja

muhammad ridwan mengatakan...

bisa minta code nya?
nanti saya periksa

Anonim mengatakan...

@anonim atas 12 Mei 2013 19.39
ternayat namespacenya gak sesuai aka gak nyambung dari tutorial sebelumhya, ditutorial ini udab berubah namespace di model dan controllernya mesti ganti,

kalau mau trace coba langsung buka tutor ke 4 nya download source code nya trace dari situ aja