回答:
渡したフィールド(モデルから)のフォームに非表示の入力を作成します。
これは、Model / ViewModelのフィールドで、ページに永続化する必要があり、別の呼び出しが行われたときに戻されたが、ユーザーには表示されないようにする場合に役立ちます。
次のViewModelクラスを検討してください。
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
ここで、編集ページにIDを保存したいが、表示されないようにします。
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
この結果、次のHTMLと同等になります。
<form name="form1">
<input type="hidden" name="Id">2</input>
<input type="text" name="Value" value="Some Text" />
</form>
そして、非表示のID入力を編集アクションメソッドに戻すには:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
多くの機能のように、これは多くの異なる問題を解決するために多くの異なる方法で使用できます。私はそれを私たちのツールベルトのさらに別のツールと考えています。
これまでのところ、IDの非表示に重点を置いて説明してきましたが、これは1つの値にすぎないため、多くの値に使用しないでください。それが私がやっていることです、html.beginformが新しいオブジェクトを作成し、そのビューのモデルオブジェクトにすでにいくつかの値が渡されている場合、それらのビューに一度に1つのビューだけをクラスに値をロードします。 beginformでそれらの値への参照を提供しない限り、値は失われます。
html.hiddenforの大きな動機を確認するには、.NET MVCでビューからコントローラーにデータを渡す-"@model"が強調表示されていないことを確認することをお勧めします
Razorコード@ Html.Hiddenまたは@ Html.HiddenForの使用は、次のHtmlコードに似ています。
<input type="hidden"/>
また、次のリンクも参照してください