输入隐藏是没有价值的

时间:2015-01-08 10:20:56

标签: asp.net-mvc-4

很奇怪。

在我的.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") />

哪个工作正常。但是,我想知道是否有人知道原始输出会发生什么。

谢谢大家。

1 个答案:

答案 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())" />