Nullable object must have a value While rendering a CheckBox in Razor
我正在尝试使用Razor在MVC中创建一个CheckBox,这是下面的代码:
1
| @Html.CheckBoxFor(m => m.PDModel.EducationMasterList[0].eduMarksheet, new { @class ="marksheet" }) |
但显示错误无法隐式转换"布尔"?来"布尔"。您是否缺少类型转换。
为了解决这个问题,我使用了@Html.CheckBoxFor(m => m.PDModel.EducationMasterList[0].eduMarksheet.Value, new { @class ="marksheet" }),并且给出了此错误:可为空的对象必须具有一个值。
和@Html.CheckBoxFor(m => m.PDModel.EducationMasterList[0].eduMarksheet.GetValueOrDefault(), new { @class ="marksheet" })并给出此错误:模板只能与字段访问,属性访问,一维数组索引或单参数自定义索引器表达式一起使用。
任何建议都会感激不尽。
感谢Adavance
- 您应该将字段更改为bool。复选框值为空是没有意义的。
您不能为可为null的布尔创建复选框。复选框具有2个状态,分别为checked/true和unchecked/false,但可为空的布尔型具有3个状态,分别为true,false和null,因此无法回传指示其false还是false的值。 null。
您可以使用
1
| @Html.EditorFor(m => m.PDModel.EducationMasterList[0].eduMarksheet, ... |
这将呈现一个包含3个值(" True "," False "和" Not set ")的下拉列表。另一种选择是创建3个单选按钮。
请注意,@Html.CheckBoxFor(m => m.PDModel.EducationMasterList[0].eduMarksheet.Value, ..)将毫无意义,因为它创建了一个复选框并与属性name="EducationMasterList[0].eduMarksheet.Value"关联了隐藏的输入,因此当它回发时将不匹配任何模型属性,并且绑定将失败。
- 仅当您将属性设为bool而不是bool?时
-
我不能做那个混蛋吗?布尔值,因为如果用户尚未选中它,则应在该字段中输入null值。那就是为什么我让那个领域为空
-
在那种情况下,您需要按我在答案中指出的@Html.EditorFor()或3个单选按钮(" true," false"和" not set"),但是如果用户未检查,为什么不能表示" false"而不是" null"。仅当您需要3个可能的值时才需要可为null的布尔值-是或否或我不知道
-
然后将属性更改为bool。你不能做不可能的事。
-
然后,也许您应该考虑接受答案以解决此问题