在我的视图模型中,我有一个名为BirthDate的可为null的DateTime属性。
当我向控制器提交无效的DateTime值时,ModelState.IsValid为false,表示BirthDate是无效的DateTime。
如何使ModelState将无效的可为null的DateTime视为null值,而不是使其无效?
ModelState对DateTime有点麻烦,因为每次发布的输入都与DateTime格式不匹配。isValid()将为false。
您是否考虑过使用字符串接收用户输入,然后查看是否可以解析为DateTime。
Ps。当试图发布并清空字符串时也会发生这种情况:C#MVC 4 ViewModel不接受null DateTime
希望这有帮助:)
您正在进行客户端验证,然后您不必担心验证,如果出生日期值为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字段。