Keluarga Membentuk Mengambil nilai elemen formulir yang dikirim dalam badan permintaan HTTP menggunakan formulir yang menggunakan metode POST.
Sintaksis
Form Permintaan(elemen) [(indeks) |.Menghitung]
Pilihan
elemen
Nama elemen bentuk dari mana keluarga mengambil nilai.
indeks
Parameter opsional yang memungkinkan akses ke salah satu dari beberapa nilai parameter. Bisa bilangan bulat antara -1 dan Form Permintaan(parameter).Menghitung.
Catatan
Keluarga Membentuk diindeks oleh nama parameter di badan permintaan. Arti Form Permintaan(elemen) adalah array dari semua nilai elemen, yang muncul di isi permintaan. Anda dapat menentukan jumlah nilai parameter dengan menelepon Form Permintaan(elemen).Menghitung. Jika parameter tidak memiliki banyak nilai yang terkait dengannya, penghitungnya adalah 1. Jika parameter tidak ditemukan, penghitungnya adalah 0.
Untuk merujuk ke satu nilai elemen formulir yang memiliki banyak nilai, Anda harus menentukan nilai untuk indeks. Parameter indeks bisa sembarang angka antara 1 dan 1 Form Permintaan(elemen).Menghitung. Jika salah satu dari beberapa parameter formulir direferensikan tanpa nilai indeks, data dikembalikan sebagai string yang dipisahkan koma.
Kapan Form Permintaan digunakan dengan parameter, server web mem-parsing isi permintaan HTTP dan mengembalikan data yang ditentukan. Jika aplikasi Anda memerlukan data yang tidak diurai dari formulir, Anda dapat mengaksesnya dengan menelepon Form Permintaan tanpa parameter.
Catatan. Saat bekerja dengan ASP dan mengirim data dalam jumlah besar melebihi 100 KB, metodenya Form Permintaan tidak dapat digunakan. Jika aplikasi Anda perlu mengirimkan data melebihi batas ini, Anda dapat membuat kacang yang menggunakan Request.BinaryRead.
Dimungkinkan untuk mengulangi semua nilai data dalam permintaan formulir. Misalnya, jika pengguna mengisi formulir dengan memberikan dua nilai, Cokelat dan Butterscotch, untuk elemen FlavourFavorit, Anda dapat mengekstrak nilai tersebut menggunakan skrip di bawah ini.
For i = 1 To Request.Form("FavoriteFlavour").Count
Response.Write Request.Form("FavoriteFlavour")(i) & "
"
Skrip di atas akan menampilkan informasi berikut.
Anda dapat menggunakan teknik ini untuk menampilkan nama parameter, seperti yang ditunjukkan pada skrip di bawah ini.
Untuk i = 1 ke Request.Form("FavoriteFlavour").count %>
Permintaan.Form(Rasa Favorit) =<%= Request.Form("FavoriteFlavor")(i)_
%>
Skrip ini akan menampilkan yang berikut di browser:
Request.Form(Flavor Favorit) = Cokelat
Request.Form(Flavor Favorit) = Butterscotch
Contoh
Pertimbangkan bentuk berikut:
Gambar tersebut menunjukkan bagaimana tampilan halaman sederhana ini di jendela browser web:
Saat pengguna mengklik tombol Kirim, browser mengambil nilai saat ini dari setiap kontrol dan membentuk string panjang darinya. String ini kemudian dikirim ke halaman yang ditentukan di handle
Pembaruan terakhir: 31.10.2015
Meskipun kita dapat menulis sendiri pembantu apa pun yang diperlukan, kerangka kerja MVC sudah menyediakan sekumpulan besar pembantu html bawaan yang memungkinkan kita menghasilkan markup ini atau itu, terutama untuk bekerja dengan formulir. Oleh karena itu, dalam banyak kasus, Anda tidak perlu membuat pembantu sendiri, dan Anda dapat menggunakan pembantu bawaan.
Pembantu Html.BeginForm
Kita dapat menggunakan elemen html standar untuk membuat formulir, misalnya:
Ini adalah formulir html sederhana yang mengirimkan semua data yang dimasukkan saat tombol diklik. permintaan POST ke /Rumah/Beli. Pembantu BeginForm/EndForm bawaan memungkinkan Anda membuat formulir yang sama:
Masukkan nama Anda |
|
Masukkan alamat: |
|
Metode BeginForm menggunakan parameter nama metode tindakan dan nama pengontrol, serta jenis permintaan. Pembantu ini membuat sebagai tag awal
. Oleh karena itu, saat merender tampilan ke aliran keluaran, kita akan mendapatkan kode html yang sama dengan tag formulir. Oleh karena itu, kedua metode itu identik.Ada satu poin di sini. Jika kita memiliki dua versi dari metode yang sama yang didefinisikan di pengontrol - untuk metode POST dan GET, misalnya:
Public ActionResult Buy() ( return View(); ) public string Buy(Beli pembelian) ( .............. return "Terima kasih telah membeli buku";; )
Artinya, memanggil halaman dengan formulir dan mengirimkan formulir dilakukan dengan tindakan Beli yang sama. Dalam hal ini, dimungkinkan untuk tidak menentukan parameter dalam pembantu Html.BeginForm:
@menggunakan(Html.BeginForm()) ( ............. )
Entri informasi
Contoh sebelumnya menggunakan elemen html standar bersama dengan pembantu Html.BeginForm. Namun, set pembantu html juga berisi pembantu untuk input pengguna. MVC mendefinisikan berbagai pembantu input untuk hampir setiap elemen html. Apa yang harus dipilih - pembantu atau elemen input html standar, pengembang sendiri yang memutuskan.
Terlepas dari jenisnya, semua pembantu html dasar menggunakan setidaknya dua parameter: parameter pertama digunakan untuk menyetel nilai atribut id dan nama, dan parameter kedua digunakan untuk menyetel nilai atribut nilai
Html.TextBox
Pembantu Html.TextBox menghasilkan tag input dengan nilai atribut type dari text . Pembantu TextBox digunakan untuk menerima input pengguna. Jadi, mari kita tulis ulang form sebelumnya dengan field input diganti dengan helper Html.TextBox:
@using(Html.BeginForm("Beli", "Beranda", FormMethod.Post)) (
Masukkan nama Anda:
@Html.TextBox("Orang", "Masukkan nama")Masukkan alamat:
@Html.TextBox("Alamat", "Masukkan alamat") }Kami akan mendapatkan hasil yang sama:
Html.TextArea
Pembantu TextArea digunakan untuk membuat elemen
akan ada markup html berikut:
Harap perhatikan bahwa helper menerjemahkan nilai yang ditempatkan di dalamnya, termasuk tag html (semua helper mendekode nilai model dan nilai atribut). Versi lain dari pembantu TextArea memungkinkan Anda menentukan jumlah baris dan kolom yang menentukan ukuran bidang teks.
@Html.TextArea("teks", "halo
dunia", 5, 50, nol)
Pembantu ini akan menghasilkan markup berikut:
Html.Tersembunyi
Dalam contoh formulir, kami menggunakan input bidang tersembunyi type="hidden" , alih-alih kami bisa saja menggunakan pembantu Html.Hidden. Jadi, panggilan pembantu berikut:
@Html.Hidden("BookId", "2")
menghasilkan markup:
Dan saat meneruskan variabel dari ViewBag, kita perlu mentransmisikannya ke tipe string: @Html.Hidden("BookId", @ViewBag.BookId as string)
Html.Password
Html.Password membuat bidang untuk memasukkan kata sandi. Ini mirip dengan pembantu TextBox, tetapi menampilkan topeng kata sandi alih-alih karakter yang dimasukkan. Kode selanjutnya:
@Html.Password("UserPassword", "val")
menghasilkan markup:
Html.RadioButton
Pembantu Html.RadioButton digunakan untuk membuat tombol radio. Ini menghasilkan elemen input dengan nilai type="radio" . Untuk membuat grup tombol radio, Anda perlu menetapkan nama yang sama untuk semuanya (nama properti):
@Html.RadioButton("warna", "merah") merah
@Html.RadioButton("warna", "biru") biru
@Html.RadioButton("warna", "hijau", benar) hijau
Kode ini membuat markup berikut:
merah
biru
hijau
Html.CheckBox
Html.CheckBox dapat digunakan untuk membuat dua elemen sekaligus. Ambil, misalnya, kode berikut:
@Html.CheckBox("Aktifkan", salah)
Ekspresi ini akan menghasilkan HTML berikut:
Artinya, selain kotak centang itu sendiri, bidang tersembunyi juga dibuat. Mengapa itu dibutuhkan? Intinya adalah browser mengirimkan nilai kotak centang hanya ketika kotak centang dipilih atau dicentang. Dan bidang tersembunyi memastikan bahwa elemen Aktifkan diatur ke nilai meskipun pengguna belum mencentang kotak.
Html.Label
Pembantu Html.Label membuat elemen , dan parameter yang diteruskan ke helper menentukan nilai atribut for dan pada saat yang sama teks pada elemen. Versi helper yang kelebihan beban memungkinkan Anda menentukan nilai atribut for dan teks pada label secara terpisah satu sama lain. Misalnya, deklarasi helper Html.Label("Name") menghasilkan markup berikut:
Elemen label mewakili label sederhana untuk melampirkan informasi ke elemen input, seperti kolom teks. Atribut for dari elemen label harus berisi ID dari elemen input terkait. Saat pengguna mengklik label, browser secara otomatis mentransfer fokus ke elemen masukan yang terkait dengan label tersebut.
Html.DropDownList
Helper Html.DropDownList membuat daftar dropdown, yaitu sebuah elemen . Untuk menghasilkan daftar seperti itu, Anda memerlukan kumpulan objek SelectListItem yang mewakili item daftar. Objek SelectListItem memiliki properti Text (teks yang akan ditampilkan), Value (nilai itu sendiri, yang mungkin tidak sama dengan teks), dan Selected . Anda dapat membuat kumpulan objek SelectListItem atau menggunakan pembantu SelectList. Pembantu ini melihat objek IEnumerable dan mengubahnya menjadi urutan objek SelectListItem. Misalnya, @Html.DropDownList("countires", new SelectList(new string ("Russia", "USA", "Canada", "France")),"Countries") menghasilkan markup berikut:
Sekarang berakhir contoh kompleks. Mari daftar kumpulan elemen Buku. Di pengontrol, kami akan meneruskan daftar ini melalui ViewBag:
BookContext db = BookContext baru(); Indeks ActionResult publik() ( SelectList books = new SelectList(db.Books, "Author", "Name"); ViewBag.Books = books; return View(); )
Di sini kita membuat objek SelectList dengan meneruskan konstruktornya kumpulan nilai untuk daftar (db.Books), nama properti model Buku untuk digunakan sebagai nilai (Penulis), dan nama properti model Buku untuk digunakan untuk ditampilkan dalam daftar. Dalam hal ini, tidak perlu menyetel dua properti yang berbeda, dimungkinkan menyetel satu untuk nilai dan tampilan.
Kemudian dalam tampilan kita bisa menggunakan SelectList ini seperti ini:
@Html.DropDownList("Penulis", ViewBag.Buku sebagai SelectList)
Dan saat tampilan dirender, semua item SelectList akan ditambahkan ke daftar dropdown
Html.ListBox
Pembantu Html.ListBox, seperti DropDownList , membuat sebuah elemen , tetapi memungkinkan beberapa pemilihan elemen (yaitu, atribut berganda diatur ke banyak). Untuk membuat daftar yang mendukung banyak pilihan, alih-alih SelectList, Anda bisa menggunakan kelas MultiSelectList :
@Html.ListBox("countires", new MultiSelectList(new string ("Russia", "USA", "China", "India")))
Kode ini menghasilkan markup berikut:
Dengan mentransfer nilai tunggal ke server, semuanya menjadi jelas, tetapi bagaimana cara mentransfer banyak nilai? Katakanlah kita memiliki formulir berikut:
@using (Html.BeginForm()) ( @Html.ListBox("negara", MultiSelectList baru(string baru ( "Russia", "USA", "China", "India" )))
}Kemudian metode pengontrol dapat menerima nilai-nilai ini seperti ini:
Indeks string publik (string negara) ( string result = ""; foreach (string c di negara) ( result += c; result += ";"; ) return "Anda telah memilih: " + result; )
Bentuk dengan banyak tombol
Biasanya, hanya ada satu tombol kirim pada formulir. Namun, dalam situasi tertentu mungkin perlu menggunakan lebih dari satu tombol. Misalnya, ada bidang untuk memasukkan nilai, dan dua tombol menunjukkan apakah nilai ini harus dihapus atau, sebaliknya, ditambahkan:
@using (Html.BeginForm("TindakanSaya", "Beranda", FormMethod.Post)) (
}
Solusi paling sederhana adalah menyetel atribut name ke nilai yang sama untuk setiap tombol, tetapi menyetel atribut value ke nilai yang berbeda. Dan metode yang berbentuk mungkin terlihat seperti ini:
Public ActionResult MyAction(string product, string action) ( if(action=="add") ( ) else if(action=="delete") ( ) // sisa kode metode )
Dan dengan bantuan konstruksi bersyarat, bergantung pada nilai parameter tindakan, yang menyimpan nilai atribut nilai dari tombol yang ditekan, tindakan tertentu dilakukan.