我正在ASP.NET MVC應用程序中工作。我有一個視圖模型如下:asp.net MVC ModelState.IsValid返回false
public class SampleInterestViewModel
{
//Properties defined
//One such property that shows an error in ModelState is as follows
public DateTime? SampleDate { get; set; }
}
從UI角度用戶可以輸入日期爲mmddyyyy。當用戶輸入 01012001這樣的格式時,控制器中的我的ModelState.IsValid代碼片段返回false。當我在ModelState中快速觀察時,發現Propery「SampleDate」的錯誤,並說「值01012001對SampleDate無效」。
在我的模型綁定器中,在OnModelUpdated事件期間,我嘗試將值01012001設置爲01/01/2001,並將其指派回SampleInterestViewModel.SampleDate,認爲ModelState.IsValid可能會返回true,而不會出現該錯誤。但是仍然ModelState.IsValid是false,當我查看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值。
任何想法或意見。
非常好的答案。但是我仍然會按照@布拉德利的方式繼續前進。但從你的回答中我學到了一些新東西。 – SARAVAN 2010-05-21 17:17:52