2016-11-16 8 views
-1

次のコードがHTMLに続く結果をどのようにして説明できますか?HTMLで生成された重複した入力/入力値を保持

<div class="col-sm-4 col-md-4"> 
    @Html.CheckBoxFor(m => m.IsFlatPrice) 
    @Html.ValidationMessageFor(m => m.IsFlatPrice) 
</div> 

<div class="col-sm-4 col-md-4"> 
    <input id="IsFlatPrice" name="IsFlatPrice" type="checkbox" value="true"> 
    <input name="IsFlatPrice" type="hidden" value="false"> 
    <span class="field-validation-valid" data-valmsg-for="IsFlatPrice" data-valmsg-replace="true"></span> 
</div> 

また値は、プロパティがあるモデルとして偽であると予想されます。

答えて

2

CheckBoxFor()メソッドは、2つの入力、<input type="checkbox" .. />および<input type'"hidden" .. />を生成し、フォームを送信するときに値が確実に返されるようにします。

チェックボックスがチェックされている場合、フォームはあなたの財産の両方true(チェックボックスの値)とfalse(隠された入力の値)を送信しますが、DefaultModelBinderセットの最初の値に基づいて、プロパティ値( true)、第2の値は無視されます。

このチェックボックスをオフにすると、非表示のチェックボックスは値を送信しないため、フォームは非表示入力(false)の値のみを送信します。

モデルプロパティがあるとして、さらに値がfalseであることが期待される - それがあった場合、あなたの財産は、常に関係なく、チェックボックスの状態の、POSTメソッドでfalseになるので幸いにも、それはそうではありません。

+0

大丈夫私はそれを知らなかった。言及のthx!私はまだ、私のプロパティIsFlatPriceの非隠しチェックボックスの値がtrueであるのに対して、modelsプロパティはfalseで、チェック/チェック解除はブラウザの開発者ウィンドウ内の現在の値を更新しないのはなぜだろうか。私はチェックボックスの値がモデルのプロパティ値を反射しない理由についてあなたの説明を誤解していると思います。 –

+0

あなたは慎重に答えを読む必要があります:)チェックボックスは値を持っています(この場合は 'value =" true "')。チェックボックスをオンまたはオフにすると、 'value'が変更されます - ' checked'状態をトグルします。チェックされている場合は値をポストバックし( 'true')、チェックされていなければ何もポストしません。 –

+0

ああ私は値を混ぜてチェックした –

関連する問題