Jawaban:
Ini menciptakan input tersembunyi pada formulir untuk bidang (dari model Anda) yang Anda berikan.
Berguna untuk kolom di Model / ViewModel yang perlu Anda pertahankan di halaman dan telah dikembalikan saat panggilan lain dilakukan tetapi tidak boleh dilihat oleh pengguna.
Pertimbangkan kelas ViewModel berikut:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
Sekarang Anda ingin halaman edit menyimpan ID tetapi tidak terlihat:
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
Ini menghasilkan persamaan dari HTML berikut:
<form name="form1">
<input type="hidden" name="Id">2</input>
<input type="text" name="Value" value="Some Text" />
</form>
Dan untuk menggunakan input ID tersembunyi kembali pada metode tindakan Edit Anda:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
Seperti banyak fungsi lainnya, yang satu ini dapat digunakan dengan berbagai cara untuk memecahkan banyak masalah yang berbeda, saya menganggapnya sebagai alat lain di sabuk alat kami.
Sejauh ini, pembahasan hanya berfokus pada menyembunyikan ID, tetapi itu hanya satu nilai, mengapa tidak menggunakannya untuk banyak nilai! Itulah yang saya lakukan, saya menggunakannya untuk memuat nilai di kelas hanya satu tampilan pada satu waktu, karena html.beginform membuat objek baru dan jika objek model Anda untuk tampilan itu sudah memiliki beberapa nilai yang diteruskan padanya, itu nilai akan hilang kecuali Anda memberikan referensi ke nilai tersebut di formulir awal.
Untuk melihat motivasi besar bagi html.hiddenfor, saya sarankan Anda melihat Meneruskan data dari Tampilan ke Pengontrol di .NET MVC - "@model" tidak menyorot
Penggunaan kode Razor @ Html.Hidden atau @ Html.HiddenFor mirip dengan kode Html berikut
<input type="hidden"/>
Dan lihat juga tautan berikut