Asp.net MVC可以为空的DateTime模型状态验证

时间:2013-08-06 08:22:55

标签: asp.net-mvc modelstate asp.net-mvc-validation

在我的视图模型中,我有一个名为BirthDate的可为空的DateTime属性。

当我向控制器提交无效的DateTime值时,ModelState.IsValid为false,表示BirthDate是无效的DateTime。

如何让ModelState将无效的可空DateTime视为空值,而不是使其无效?

2 个答案:

答案 0 :(得分:0)

您正在进行客户端验证,如果出生日期值为null或为空,则您不必担心验证,然后返回null。

public class DateFieldAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value == null || value == string.empty)
        {
            return null;
        }
        else
        {
   //Validate the Birth date.
        }
    }
}

如果返回NULL,则Modelstate不会考虑Birthdate字段。

答案 1 :(得分:0)

ModelState对DateTime有点麻烦,因为每次发布的输入都不符合日期时间格式.isValid()将是假的。

您是否考虑使用字符串来接收用户输入,然后查看是否可以解析为DateTime。

聚苯乙烯。尝试发布和清空字符串时也会发生这种情况:C# MVC 4 ViewModel not accepting null DateTime

希望这会有所帮助:)