在我的 MVC 应用程序的 Http ActionResult 方法中,ModelState.IsValid() 测试失败。具体来说,日期时间值被视为无效。为什么会这样是个难题,因为它的准双胞胎被认为是有效的。它们在 View (HTML) 中以相同的方式连接到 Controller:
<input id="BeginDateTime" name="BeginDateTime" required="true" />
<input id="EndDateTime" name="EndDateTime" required="true" />
相关型号代码:
public DateTime BeginDateTime { get; set; }
public DateTime EndDateTime { get; set; }
相关控制器代码:
var criteria = new CriteriaContract
{
AutoPurge = true,
Serial = Serial,
parameters = new Dictionary<string, string>(),
type = DatasourceType.ReceiptCollection
};
string bdt = model.BeginDateTime.ToString();
string edt = model.EndDateTime.ToString();
criteria.parameters.Add("BeginDateTime", bdt);
criteria.parameters.Add("EndDateTime", edt);
调试器显示的值几乎相同;在最近的调试会话中,它们是:
BeginDateTime == "2013-08-19 14:43:12"
EndDateTime == "2013-08-19 14:43:10"
因此,具有相同的数据类型,在代码中被相同的处理,并且具有相同的格式,这些值中的一个怎么可能是有效的(BeginDateTime),而它几乎相同的孪生被视为无效?
更新
这一定是一些暂时的异常或缓存问题,因为再次清理和重建最终导致所有值都被视为有效......看图。