Why is my hidden input writing: value=”value” instead of true/false?

This behaviour changed between MVC3 and MVC4. In MVC3, if you have:

<input name="somefield" type="hidden" someprop="@(SomeBooleanExpression)"/>

it would write very literally:

<input name="somefield" type="hidden" someprop="True"/>

However, in MVC4, it follows the “checkbox” etc rules, so if the value is true you get:

<input name="somefield" type="hidden" someprop="someprop"/>

and if it is false it is omitted completely:

<input name="somefield" type="hidden"/>

To get around this, consider .ToString():

<input name="somefield" type="hidden"
   someprop="@(SomeBooleanExpression.ToString())"/>

which then follows string rules rather than boolean rules.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)