我在 ASP.NET MVC 应用程序中工作。我有一个视图模型如下:
public class SampleInterestViewModel
{
//Properties defined
//One such property that shows an error in ModelState is as follows
public DateTime? SampleDate { get; set; }
}
从 UI Perspective 用户可以输入日期为 mmddyyyy。当用户以这种格式输入 01012001 时,我在控制器中的 ModelState.IsValid 代码段返回 false。当我在 ModelState 中快速查看时,我看到属性“SampleDate”的错误,说“值 01012001 对 SampleDate 无效”。
在我的模型绑定器中,在 OnModelUpdated 事件期间,我尝试将值 01012001 格式化为 01/01/2001 并将其分配回 SampleInterestViewModel.SampleDate 认为 ModelState.IsValid 可能返回 true 而不会出现该错误。但是 ModelState.IsValid 仍然是假的,当我查看 ModelState 字典时,这个特定的属性在它的集合中仍然存在错误。
最后,我尝试格式化 01012001 并将值 01/01/2001 直接更新为 ModelState 字典中的 Property SampleDate。但 ModelState.IsValid 仍然为 false,显示 SampleDate 属性的相同错误。无法弄清楚为什么 ModelState.IsValid 有效,以及它如何以及何时设置为 false。
如果用户在 UI 中输入 01012001,我仍然需要在模型绑定器中将其格式化为 01/01/2001 并确保 ModelState.IsValid 为 true,以便我的控制器代码的其余部分可以按预期工作。在 UI 中,我正在执行 AjaxSubmit 以发布 sampleDate 值。
任何想法或评论。