2011-01-04 10 views
3

可能性の重複:
asp.net mvc: why is Html.CheckBox generating an additional hidden inputチェックボックスにも隠れたタグが付いているのはなぜですか?

私はasp.net MVCアプリのチェックボックスをレンダリングしていて、コントロールもこのような隠しフィールドを出力している:

<input id="blah-64" name="blah-64" value="true" type="checkbox"> 
<input name="blah-64" value="false" type="hidden"> 

問題がフォームを投稿すると、フォームキー「blah-64」がオン、オフに戻ります。

これはなぜですか?

答えて

8

Checkboxヘルパーのソースコードを見ると、それを説明するコメントが表示されます。それは次のようになります。W3C specificationはその、「フォームが送信されると、唯一の 『上で言うので

if (inputType == InputType.CheckBox) { 
    // Render an additional <input type="hidden".../> for checkboxes. This 
    // addresses scenarios where unchecked checkboxes are not sent in the request. 
    // Sending a hidden input makes it possible to know that the checkbox was present 
    // on the page when the request was submitted. 
... 

これは、』チェックボックスコントロールは成功を収めることができます。」 (成功した値は、提出された値になります)。隠されたフィールドは、チェックされているかどうかに関係なく、送信されます。この動作が望ましくない場合、最も簡単な方法はHTMLを自分でレンダリングし、ヘルパーを使用しないことです。

+1

ただし、どの値をとっていますか?私がそれをチェックすれば、私は "on、off"になるのですか? – Blankman

関連する問題