Asp.net mvc 在自定义IModelBinder中发布时,如何将Html.CheckBox()设置为布尔值?
我正在使用Asp.net mvc 在自定义IModelBinder中发布时,如何将Html.CheckBox()设置为布尔值?,asp.net-mvc,Asp.net Mvc,我正在使用Html.CheckBox()。生成的HTML为: <input id="IsMultiGraph" name="IsMultiGraph" value="true" type="checkbox"> <input name="IsMultiGraph" value="false" type="hidden"> 问题是,由于Html.CheckBox()正在呈现一个复选框以及一个隐藏的输入字段,如果我更改文本框的状态,回发值将加倍(即“true,false”)
Html.CheckBox()
。生成的HTML为:
<input id="IsMultiGraph" name="IsMultiGraph" value="true" type="checkbox">
<input name="IsMultiGraph" value="false" type="hidden">
问题是,由于Html.CheckBox()
正在呈现一个复选框以及一个隐藏的输入字段,如果我更改文本框的状态,回发值将加倍(即“true,false”)
我理解为什么要这样做,我正在寻找在回发期间解析复选框当前值的最佳方法(checked=true,unchecked=false)。MVC中是否有其他帮助程序方法,或者我是否应该编写自己的方法?一种方法是使用
NameValueCollection
类的GetValues
方法来获取数组属性的第一个值,如下所示:
bindingContext.HttpContext.Request.Form.GetValues("IsMultiGraph")[0]
这就行了,任何人都知道ASP.NETMVC在默认活页夹中是如何实现的。似乎复选框是一种特殊情况。也许我太累了,但昨晚我看不到他们在哪里处理复选框和隐藏输入。
bindingContext.HttpContext.Request.Form.GetValues("IsMultiGraph")[0]