1. ホーム
  2. asp.net-mvc

[解決済み] asp.net mvc: なぜ Html.CheckBox は追加の隠された入力を生成するのですか?

2022-04-20 06:13:05

質問

今気づいたのですが Html.CheckBox("foo") は1つの入力ではなく2つの入力を生成します。

<input id="foo" name="foo" type="checkbox" value="true" />
<input name="foo" type="hidden" value="false" /> 

解決方法は?

チェックボックスが選択されていない場合、フォームフィールドは送信されません。そのため、hidden フィールドには常に偽の値が存在します。チェックボックスをオフにしたままでも、フォームにはhiddenフィールドの値が残っています。これがASP.NET MVCがチェックボックスの値を処理する方法です。

確認したい場合は、Html.Hiddenではなく、フォームにチェックボックスを設置します。 <input type="checkbox" name="MyTestCheckboxValue"></input> . チェックボックスをオフにしたまま、フォームを送信し、サーバ側で投稿されたリクエストの値を見てください。チェックボックスの値がないことがわかると思います。もし隠しフィールドがあれば、その中には MyTestCheckboxValue というエントリーがあります。 false の値を指定します。