【发布时间】: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