Ответ 1
Это поведение изменилось между MVC3 и MVC4. В MVC3, если у вас есть:
<input name="somefield" type="hidden" someprop="@(SomeBooleanExpression)"/>
он писал бы буквально:
<input name="somefield" type="hidden" someprop="True"/>
Однако в MVC4 он следует правилам "checkbox" и т.д., поэтому, если значение true
, вы получаете:
<input name="somefield" type="hidden" someprop="someprop"/>
и если он false
, он полностью опускается:
<input name="somefield" type="hidden"/>
Чтобы обойти это, рассмотрите .ToString()
:
<input name="somefield" type="hidden"
someprop="@(SomeBooleanExpression.ToString())"/>
который затем следует строковым правилам, а не логическим правилам.