我正在使用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,我仍然需要在modelbinder中将其格式化为01/01/2001,并确保ModelState.IsValid为true,以便我的控制器代码的其余部分可以按预期工作。在UI中我正在做一个AjaxSubmit来发布sampleDate值。
任何想法或评论。
答案 0 :(得分:4)
答案 1 :(得分:4)
我可以看到一些解决方案:
ModelState["SampleDate"].Errors.Clear();
清除ModelState错误。我认为1和2的组合是你最好的选择。