Menggunakan ASP.NET MVC ada situasi (seperti pengiriman formulir) yang mungkin memerlukan file RedirectToAction
.
Salah satu situasi tersebut adalah ketika Anda menemukan kesalahan validasi setelah pengiriman formulir dan perlu dialihkan kembali ke formulir, tetapi ingin URL mencerminkan URL formulir, bukan halaman tindakan yang dikirimkannya.
Karena saya memerlukan formulir untuk memuat data asli POST
ed, untuk kenyamanan pengguna, serta tujuan validasi, bagaimana saya bisa melewatkan data melalui RedirectToAction()
? Jika saya menggunakan parameter viewData, POST
parameter saya akan diubah menjadi GET
parameter.
c#
asp.net-mvc
Matt Mitchell
sumber
sumber
Jawaban:
Solusinya adalah dengan menggunakan properti TempData untuk menyimpan komponen Request yang diinginkan.
Misalnya:
Kemudian dalam tindakan "Formulir", Anda dapat pergi:
sumber
Perlu diingat bahwa TempData menyimpan koleksi formulir dalam sesi. Jika Anda tidak menyukai perilaku itu, Anda dapat mengimplementasikan antarmuka ITempDataProvider baru dan menggunakan beberapa mekanisme lain untuk menyimpan data sementara. Saya tidak akan melakukan itu kecuali Anda tahu pasti (melalui pengukuran dan pembuatan profil) bahwa penggunaan status Sesi merugikan Anda.
sumber
Lihatlah MVCContrib , Anda bisa melakukan ini:
sumber
Ada cara lain untuk menghindari tempdata. Pola yang saya suka melibatkan pembuatan 1 tindakan untuk render asli dan render ulang dari bentuk yang tidak valid. Ini berjalan seperti ini:
Itulah polanya kurang lebih. Seorang pseudoy kecil. Dengan ini Anda dapat membuat 1 tampilan untuk menangani rendering formulir, menampilkan ulang nilai (karena formulir akan diisi dengan nilai sebelumnya), dan menampilkan pesan kesalahan.
Ketika memposting ke tindakan ini, jika valid itu mentransfer kontrol ke tindakan lain.
Saya mencoba membuat pola ini mudah dalam kerangka validasi .net saat kami membangun dukungan untuk MVC.
sumber
Jika Anda ingin meneruskan data ke tindakan yang diarahkan ulang, metode yang dapat Anda gunakan adalah:
sumber
TempData adalah solusi yang menjaga data dari aksi ke aksi.
sumber