输入隐藏是没有价值的

Input hidden is built without value

这个很奇怪。

在我的 .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 执行时,这个方法返回的 hidden 是这样的:

<input id="myCheckboxId" name="myCheckboxId" type="hidden" />

根本没有任何价值,当我尝试将其保存到模型时,抛出异常提示无法保存模型。

我已经通过更改使用方法修复了它:

<input id="@name" name="@name" type="hidden" @((isChecked) ? "value=true" : "value=false") />

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

谢谢大家

它不完全是重复的,但在 Why is my hidden input writing: value=“value” instead of true/false?:

中有回答

if you have:

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

[and @SomeBooleanExpression] is false it is omitted completely:

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

To get around this, consider .ToString()

所以,使用:

<input id="@name" name="@name" type="hidden" value="value="@(isChecked.ToString())" />