すべての非表示フィールドの入力を自動生成するのは本当ですか。この拡張メソッドのようなものが欲しいHtml.AutoGenerateHiddenFor(viewmodel)
そして出力:
<input type="hidden" name="field1" value="123" />
<input type="hidden" name="field2" value="1234" />
<input type="hidden" name="field3" value="1235" />
すべての非表示フィールドの入力を自動生成するのは本当ですか。この拡張メソッドのようなものが欲しいHtml.AutoGenerateHiddenFor(viewmodel)
そして出力:
<input type="hidden" name="field1" value="123" />
<input type="hidden" name="field2" value="1234" />
<input type="hidden" name="field3" value="1235" />
MvcContribの Html.Serialize
メソッドを使用できます。
@using (Html.BeginForm())
{
@Html.Serialize(Model)
<button type="submit">OK</button>
}
次に、ポストバックを受信しているコントローラーアクション内で:
[HttpPost]
public ActionResult SomeAction([Deserialize] MyViewModel model)
{
...
}
従来のWebFormsのViewStateを使用してモデルをシリアル化し、シリアル化されたモデルを含む単一の非表示の入力フィールドを出力します。これは、従来のViewStateをエミュレートします。
別の解決策は、モデルをバックエンドに永続化してから、このバックエンドからモデルを取得できるようにする一意のIDを含む単一の非表示の入力フィールドをフォーム内に配置することです。