Adakah yang bisa memberitahu saya bagaimana saya bisa mengirimkan nilai ke Controller menggunakan metode ActionLink dan POST?
Saya tidak ingin menggunakan tombol.
Saya rasa ada sesuatu dengan jquery.
asp.net-mvc
actionlink
šljaker
sumber
sumber
Jawaban:
Anda tidak dapat menggunakan
ActionLink
karena itu hanya membuat<a>
tag jangkar .Anda dapat menggunakan file posting jQuery AJAX .
Atau cukup panggil metode pengiriman formulir dengan atau tanpa jQuery (yang akan menjadi non-AJAX), mungkin dalam
onclick
hal kontrol apa pun yang Anda sukai.sumber
Jika Anda menggunakan ASP MVC3, Anda dapat menggunakan Ajax.ActionLink (), yang memungkinkan Anda menentukan Metode HTTP yang dapat Anda setel ke "POST".
sumber
jquery.unobtrusive-ajax.min.js
". Jika tidak, itu akan terus melakukan GET daripada POST ketika diklik. Sintaks untuk membuat link akan seperti ini:@Ajax.ActionLink("Delete", "Delete", new { id = item.Id }, new AjaxOptions {HttpMethod = "POST"})
"data-ajax"="true, "data-ajax-url"=<your link> and "data-ajax-method"="Post"
. Btw, saya menggunakan ASP.NET MVC 3Anda dapat menggunakan jQuery untuk melakukan POST untuk semua tombol Anda. Beri mereka nama CssClass yang sama.
Gunakan "return false;" di akhir acara javascript onclick Anda jika Anda ingin melakukan RedirectToAction sisi server setelah posting jika tidak, cukup kembalikan tampilan.
Kode Razor
Kode JQuery
C #
sumber
@Aidos punya jawaban yang benar hanya ingin memperjelas karena tersembunyi di dalam komentar di postingannya yang dibuat oleh @CodingWithSpike.
sumber
Berikut adalah jawaban yang dimasukkan ke dalam proyek ASP.NET MVC 5 default yang saya percayai yang menyelesaikan tujuan gaya saya dengan baik di UI. Pengiriman formulir menggunakan javascript murni ke beberapa formulir yang mengandung.
Kasus penggunaan yang ditampilkan sepenuhnya adalah tarik-turun logout di bilah navigasi aplikasi web.
sumber
ActionLink tidak akan pernah mengaktifkan postingan. Itu selalu memicu permintaan GET.
sumber
Gunakan link Call the Action berikut:
Untuk mengirimkan nilai formulir gunakan:
Ini akan mengirimkan Data ke Pengontrol Pelanggan dan Tindakan CustomerSearchResults.
sumber
Gunakan tautan ini di dalam Ajax.BeginForm
;)
sumber
Solusi saya untuk masalah ini cukup sederhana. Saya memiliki halaman yang melakukan pencarian pelanggan satu per satu seluruh email dan yang lainnya sebagian, sebagian menarik dan menampilkan daftar daftar tersebut memiliki tautan tindakan yang mengarah ke hasil tindakan yang disebut GetByID dan meneruskan di id
GetByID menarik data untuk pelanggan yang dipilih lalu mengembalikannya
yang merupakan metode posting
sumber
Ini adalah masalah yang sulit saya pecahkan. Bagaimana cara membuat tautan dinamis di pisau cukur dan html yang dapat memanggil metode tindakan dan meneruskan nilai atau nilai ke metode tindakan tertentu? Saya mempertimbangkan beberapa opsi termasuk pembantu html khusus. Saya baru saja menemukan solusi yang sederhana dan elegan.
Pandangan
Metode tindakan
Intinya di sini adalah bahwa Url.Action tidak peduli apakah metode tindakan adalah GET atau POST. Ini akan mengakses salah satu jenis metode. Anda dapat meneruskan data Anda ke metode tindakan menggunakan
objek routeValues. Saya telah mencoba ini dan berhasil. Tidak, Anda tidak secara teknis melakukan posting atau mengirimkan formulir tetapi jika objek routeValues berisi data Anda, tidak masalah apakah itu posting atau get. Anda dapat menggunakan tanda tangan metode tindakan tertentu untuk memilih metode yang tepat.
sumber
Saya telah melakukan masalah yang sama menggunakan kode berikut:
sumber
Ini adalah solusi saya untuk masalah tersebut. Ini adalah pengontrol dengan 2 metode tindakan
Dalam View saya membuat konstruksi struktur berikut.
Tempat menarik di Razor View :
Fungsi JavaScript
confirmDelete(id)
yang dipanggil saat link yang dihasilkan@Html.ActionLink
diklik;confirmDelete()
fungsi diperlukan id dari item yang diklik. Item ini diteruskan darionClick
handler.confirmDelete("+feedback.Id+");return false;
Perhatikan handler mengembalikan false untuk mencegah aksi default - yaitu mendapatkan permintaan ke target.OnClick
acara untuk tombol dapat dilampirkan dengan jQuery untuk semua tombol dalam daftar sebagai alternatif (mungkin akan lebih baik lagi, karena akan lebih sedikit teks di halaman HTML dan data dapat diteruskan melaluidata-
atribut).Formulir memiliki
id=myForm
, untuk menemukannyaconfirmDelete()
.Bentuk termasuk
@Html.HttpMethodOverride(HttpVerbs.Delete)
untuk menggunakanHttpDelete
kata kerja, sebagai tindakan yang ditandai denganHttpDeleteAttribute
.Dalam fungsi JS saya menggunakan konfirmasi tindakan (dengan bantuan plugin eksternal, tetapi konfirmasi standar juga berfungsi dengan baik. Jangan lupa untuk menggunakan
bind()
panggilan balik atauvar that=this
(apa pun yang Anda inginkan).Formulir memiliki elemen tersembunyi dengan
id='idField'
danname='id'
. Jadi sebelum formulir dikirimkan setelah konfirmasi (result==true
), nilai elemen tersembunyi diatur ke nilai yang melewati argumen dan browser akan mengirimkan data ke pengontrol seperti ini:URL Permintaan :
http://localhost:38874/Feedback/Delete
Metode Permintaan : Kode Status POST: 302 Ditemukan
Header Respons
Lokasi: / Umpan balik Host: localhost: 38874 Formulir Data X-HTTP-Metode-Override: DELETE id: 5
Seperti yang Anda lihat, ini adalah permintaan POST dengan X-HTTP-Method-Override: DELETE dan data dalam isi diatur ke "id: 5". Respon memiliki kode 302 yang mengarahkan ke tindakan Indeks, dengan ini Anda menyegarkan layar Anda setelah menghapus.
sumber
Saya akan merekomendasikan tetap murni untuk prinsip REST dan menggunakan HTTP delete untuk menghapus Anda. Sayangnya Spesifikasi HTML hanya memiliki HTTP Get & Post. Sebuah tag hanya bisa mendapatkan HTTP. Tag formulir dapat melakukan HTTP Get atau Post. Untungnya jika Anda menggunakan ajax Anda dapat melakukan HTTP Delete dan inilah yang saya rekomendasikan. Lihat posting berikut untuk detailnya: Http Deletes
sumber
Memanggil $ .post () tidak akan berfungsi karena berbasis Ajax. Jadi metode hybrid perlu digunakan untuk tujuan ini.
Berikut adalah solusi yang berhasil untuk saya.
Langkah-langkah: 1. Buat URL untuk href yang memanggil metode dengan url dan parameter 2. Panggil POST normal menggunakan metode JavaScript
Larutan:
Dalam .cshtml:
Catatan: metode anonim harus dibungkus dengan (....) () yaitu
postGo didefinisikan seperti di bawah ini dalam JavaScript. Istirahat itu sederhana ..
@ Url.Ation ("Tampilan") membuat url untuk panggilan tersebut
{'id': @ accept.ReceiptId} membuat parameter sebagai objek yang kemudian diubah menjadi bidang POST dalam metode postGo. Ini dapat berupa parameter apa pun yang Anda butuhkan
Dalam JavaScript:
URL referensi yang telah saya gunakan untuk postGo
GET / POST non-ajax menggunakan jQuery (plugin?)
http://nuonical.com/jquery-postgo-plugin/
sumber
jQuery.post()
akan berfungsi jika Anda memiliki data khusus. Jika Anda ingin memposting formulir yang sudah ada, lebih mudah digunakanajaxSubmit()
.Dan Anda tidak perlu menyiapkan kode ini
ActionLink
sendiri, karena Anda dapat melampirkan penangan tautan dalamdocument.ready()
acara (yang merupakan metode yang lebih disukai), misalnya menggunakan$(function(){ ... })
trik jQuery.sumber
Menemukan ini perlu POST dari halaman Pencarian (Indeks) ke halaman Hasil. Saya tidak membutuhkan sebanyak yang @Vitaliy nyatakan tetapi itu mengarahkan saya ke arah yang benar. Yang harus saya lakukan hanyalah ini:
Pengontrol saya memiliki metode tanda tangan berikut:
sumber
Ini diambil dari proyek sampel MVC
sumber