【问题标题】:MVC3 marking nullable bool as required when it isn'tMVC3 在不需要时根据需要标记可为空的布尔值
【发布时间】:2013-12-20 08:46:39
【问题描述】:

我有一个 Nullable<bool> 属性作为我的模型的一部分,其中 null 完全有效:

public class IndexModel
{
    [DisplayName("Archived")]
    public bool? FilterArchived { get; set; }
}

但是,当 this 到达控制器操作时,如果它为 null,则验证失败。我现在必须执行以下操作才能解决此问题:

public ActionResult Index(IndexModel viewModel)
{
    ModelState.Remove("FilterArchived");

    // ......
}

为什么FilterArchived 属性为空时会在ModelState 中创建错误,我该如何阻止它?


确切的验证错误是:

值“null”对存档无效。

【问题讨论】:

  • 你能把这个添加到 application_start DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
  • 您是否有自定义元数据提供程序?
  • @TacettinÖzbölük,我同意,但可空类型不应按要求默认标记。那不会删除 all 必需的标志吗?即使是int 属性?
  • 您遇到什么错误? var errors = ModelState.Values.SelectMany(v => v.Errors);
  • @TacettinÖzbölük:刚刚尝试过;没有运气。

标签: c# asp.net-mvc asp.net-mvc-3 validation


【解决方案1】:

“Null”不是bool? 的有效值

要成功将null 绑定到模型值,必须缺少或为空字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多