很奇怪。
在我的.NET MVC 4项目中,我在App_Code上添加了一个包含此方法的文件:
@helper CheckBox(string name, bool isChecked = false, string className = "") {
<div class="checkboxHolder">
<input id="@name" name="@name" type="hidden" value="@isChecked") />
<i class="@className checkboxBts fa @((isChecked) ? "fa-check-square-o" : "fa-square-o")" data-checkbox-associated="@name"></i>
</div>
}
我使用它来设置使用font-awesome的复选框,因此我的应用程序复选框由隐藏的输入类型组成,它存储一个布尔值和一个图标以向用户提供反馈。
奇怪的是,当执行isChecked == false时,此方法返回的隐藏类似于:
<input id="myCheckboxId" name="myCheckboxId" type="hidden" />
没有任何价值,当我尝试将其保存到模型时,会抛出一个异常,说无法保存模型。
我已经修改了更改要使用的方法:
<input id="@name" name="@name" type="hidden" @((isChecked) ? "value=true" : "value=false") />
哪个工作正常。但是,我想知道是否有人知道原始输出会发生什么。
谢谢大家。
答案 0 :(得分:0)
这并不完全重复,但在Why is my hidden input writing: value=“value” instead of true/false?中已经回答了这个问题:
如果你有:
<input name="somefield" type="hidden" someprop="@(SomeBooleanExpression)"/>
[和@SomeBooleanExpression]为false,完全省略:
<input name="somefield" type="hidden"/>
要解决此问题,请考虑.ToString()
所以,请使用:
<input id="@name" name="@name" type="hidden" value="value="@(isChecked.ToString())" />