Pertanyaan MVC asp.net: Kirim banyak formulir


Saat mengirimkan satu formulir dari tampilan, bagaimana saya juga dapat membaca atau memiliki data pengontrol baca dalam formulir lain di halaman yang sama?


5
2018-01-20 01:32


asal


Jawaban:


Saat Anda mengirimkan formulir dengan browser, itu hanya akan mengirim data untuk bidang di dalam <formulir> </ formulir> tersebut. Ini benar terlepas dari teknologi back-end yang Anda gunakan, apakah itu ASP.net, MVC.net, PHP, Python, dll.

Satu-satunya dua pilihan yang dapat saya pikirkan adalah:

  1. Lakukan seperti WebForms dan cukup tempatkan <form> di seluruh halaman, dan pilah hasilnya nanti berdasarkan tombol apa yang ditekan.
  2. Gunakan Javascript / AJAX untuk mengumpulkan data apa pun yang Anda suka, dan dorong dengan cara apa pun yang Anda suka. Anda bahkan dapat melakukan ini secara real-time (seperti ketika kotak centang dicentang) dan tidak menyebabkan postback halaman.

Tentu saja, ada pro dan kontra untuk masing-masing, tapi itulah sifat binatang itu.


10
2018-01-20 01:42



Anda dapat melakukannya di sisi klien dengan kombinasi Ajax dan Javascript ...

<SCRIPT language="JavaScript">
function submitforms()
{
        new Ajax.Request(formUrl,
        {
            parameters: $H({param1:value,param2:value}).toQueryString(),
            method: 'post',
            onSuccess: function(transport) {
               document.myform.submit();
            }
        }
}
</SCRIPT> 

2
2018-01-20 01:43



Anda tidak bisa. Jika Anda memiliki informasi pada halaman yang ingin Anda kirimkan, Anda harus menyertakannya dengan formulir yang dikirimkan. Anda dapat menggunakan JavaScript untuk menyalin informasi dari satu formulir ke formulir berikutnya ketika mengirimkannya.


1
2018-01-20 01:34



        var formData1 = $("#form1").serializeObject();
        var formData2 = $("#form2").serializeObject();
        $.extend(formData1, formData2);
        var formData = JSON.stringify(formData1);

        $.ajax({
            type: "POST",
            url: "@Url.Action("MyAction", "MyController")",
            data: formData,
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                ...Do something with the data
            },
            error: function(result) {
                ...Handle the error
            }
        });

Kemudian pada sisi pengontrol Anda (saya menggunakan MVC tetapi WebAPI mungkin akan bekerja sama) Anda dapat mendeklarasikan dua parameter terpisah yang cocok dengan model sisi klien Anda dan semuanya akan diselesaikan untuk Anda, yang mengasumsikan Anda tidak memiliki tumpang tindih nama properti! Gotta suka saat keajaiban terjadi!

public ActionResult MyAction(FormDataModel1 formData1, FormDataModel2 formData2)

Kredit ke https://github.com/macek/jquery-serialize-object untuk kode serializeObject.


0
2017-09-26 15:53