c# - MVC 映射到模型中可为空的 bool 值

标签 c# data-binding asp.net-mvc-2 viewmodel nullable

使用包含字段的 View 模型:

public bool? IsDefault { get; set; }

尝试在 View 中映射时出现错误:

<%= Html.CheckBoxFor(model => model.IsDefault) %>

无法隐式转换类型“bool”?到'bool'。存在显式转换(是否缺少强制转换?)

我试过转换和使用 .Value 都没有用。

请注意,我想要的行为是提交表单时应将模型中的 IsDefault 设置为 true 或 false。 null 的值仅表示尚未填充模型。

最佳答案

问题是你真的有三个可能的值; true、false 和 null,因此 CheckBoxFor 无法处理这三种状态(只能处理两种状态)。

Brad Wilson 在他的博客上讨论 here .他将 DropDownList 用于可为空的 bool 值。

这个 StackOverflow question在描述情况方面比我在上面所做的要好得多。解决方案的缺点是有时可以为空并不意味着错误,它应该是可以为空的。这方面的一个例子是您不希望应用 true 或 false 的过滤条件。

关于c# - MVC 映射到模型中可为空的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035957/

相关文章:

c# - 在 switch case 中,如果我们将 "default"写为任何单词或单个字母,它不会抛出错误

c# - 使用 .NET DataSet 的正确方法是什么?

c# - WPF TextBlock 文本绑定(bind)

c# - 如何将标签值作为参数传入 javascript 函数?

asp.net-mvc-2 - 为什么 ValidationMessageFor 在这种情况下不显示我的验证消息?

c# - 使用条件语句通过 FTP 下载文件

c# - Windows窗体应用程序中数组的最小元素问题

c# - 如果属性在构造函数中初始化,则似乎未设置 XAML 绑定(bind)

.net - 尝试向 MvcHandler 添加功能

asp.net-mvc-2 - 防伪 token 错误