输入隐藏是没有价值的
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())" />
这个很奇怪。
在我的 .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())" />