在我的視圖模型中,我有一個名爲BirthDate的可爲空的DateTime屬性。Asp.net MVC可爲空DateTime模型狀態驗證
當我向控制器提交一個無效的DateTime值時,ModelState.IsValid爲false,表示BirthDate是一個無效的DateTime。
我該如何讓ModelState將無效的可空DateTime作爲空值對待,而不是使其失效?
在我的視圖模型中,我有一個名爲BirthDate的可爲空的DateTime屬性。Asp.net MVC可爲空DateTime模型狀態驗證
當我向控制器提交一個無效的DateTime值時,ModelState.IsValid爲false,表示BirthDate是一個無效的DateTime。
我該如何讓ModelState將無效的可空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不會考慮生日日期字段。
ModelState對於DateTime有點麻煩,因爲每次發佈的輸入都不匹配日期時間格式.isValid()將會是false。
您是否考慮過使用字符串來接收用戶輸入,並稍後查看是否有可能解析爲DateTime。
Ps。 C# MVC 4 ViewModel not accepting null DateTime
希望這有助於:)
這是否有道理:嘗試後空字符串時,也會出現這種情況?如果用戶輸入日期,他會期望它被接受(或拒絕)。如果你簡單地將它們保存爲'null',它可能會變成問題。 – Gorgsenegger
我需要這個,因爲在客戶端驗證日期時間是非常有問題的,尤其是如果您使用[google chrome](http://stackoverflow.com/questions/6906725/unobtrusive-validation-in-chrome-wont-validate-with -dd毫米-YYYY) – Catalin