ror*_*yok 5 checkbox jquery boolean asp.net-mvc-4 twitter-bootstrap
Bootstrap有大量使用,很多比我聪明的人都在使用它,所以我确定我要指出的问题是完全没有问题,我只是错误地使用它,但...... .
我有一个表格,其中一个复选框变成了一个开关使用 bootstrapSwitch()
这是我的HTML
<div class="bootstrap-switch-square">
<input type="checkbox" data-toggle="switch" name="Resend" id="Resend" />
</div>
Run Code Online (Sandbox Code Playgroud)
和js:
$("#Resend").bootstrapSwitch();
Run Code Online (Sandbox Code Playgroud)
这会在我的页面上产生一个整洁的自举切换开关.该页面发布到ASP.NET MVC4控制器方法,该方法需要模型中的布尔值.
public class MyModel
{
public bool Resend { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我发布此表单时,我的Resend布尔值始终为false.为什么?因为bootstrap开关发布的值on不是true.
我不想将我的模型从布尔值更改为字符串,因此我不得不在jquery中截取帖子并将复选框的值更改为trueif on.这似乎是我的倒退.当然如果bootstrapSwitch()在复选框上使用它应该生成true/false而不是on/off
我错过了什么吗?
小智 9
从HTML规范中,复选框的默认值为"on",因为您没有包含value属性
默认情况下/上
获取时,如果元素具有value属性,则必须返回该属性的值; 否则,它必须返回字符串"on".在设置时,必须将元素的value属性设置为新值.
把你的HTML更改为
<div class="bootstrap-switch-square">
<input type="checkbox" data-toggle="switch" name="Resend" id="Resend" value="true" />
</div>
Run Code Online (Sandbox Code Playgroud)
因此,如果选中它,true将在表单数据中发送一个值并正确绑定到您的boolean属性(如果未选中,则不会发送任何值,并且该属性将是其默认值(false)