2012-03-23 28 views
0

我不是为什么Html.CheckBoxFor(x => x.IsChecked)帮手已经实现。为什么它迫使你必须使用bool值?我没有在asp.net中获得CheckboxFor的html帮手mvc

从我看到的常规html输入可以有任何string"value"。那么为什么html助手限制你?

我现在有一个问题,我想更改"value"来存储我的GUID,但因为它只需要一个bool我不能这样做。

我看到其他人做了HiddenFor()来解决这个问题,但我只是觉得这很奇怪。

+0

这是一个答案,有人创建了自己的扩展,它可能对你有用:http://stackoverflow.com/questions/7195846/how-can-i-make-html-checkboxfor-work-on-a字符串 – 2012-03-23 18:01:35

回答

0

这是因为通常复选框有2个状态:选中和未选中。这是完美的布尔模型。现在我明白你的痛苦,并同意你的看法,这可能有点局限性,因为底层的HTML元素允许任何类型。但是,通过简单地向视图模型添加布尔属性,然后将CheckBoxFor帮助程序绑定到此属性,此限制很容易解决。

+0

为了说明它稍微不同的方式,'CheckboxFor()'帮助器将一个布尔值绑定到复选框*状态*,而不是*值*。 – GalacticCowboy 2012-03-23 18:43:10

+0

@Darin Dimitrov - 这就是我现在拥有的ViewModel中的一个bool。奇怪的是我必须使用HiddenFor()来保存ID,所以我也知道这一点。如果它本来不错,它将全部在一个控制之中。 – chobo2 2012-03-23 20:14:24

+0

@ chobo2,我同意你的看法,在某些情况下可以方便地绑定到另一个类型而不是bool。 – 2012-03-23 21:13:13