MVC アプリの Http ActionResult メソッドで、ModelState.IsValid() テストが失敗します。具体的には、datetime 値が無効と見なされます。その準双子が有効であると受け入れられているため、なぜそれが難問なのか. それらはビュー (HTML) で同じ方法でコントローラーに接続されます。
<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"
では、同じデータ型であり、コードで同じように扱われ、同じ形式を持っている場合、これらの値の 1 つが有効 (BeginDateTime) であるのに、実質的に同一のツインが無効と見なされるのはどうしてでしょうか?
アップデート
一時的な異常またはキャッシュの問題であったに違いありません。クリーニングと再構築により、最終的にすべての値が有効であると見なされるようになったためです。図を参照してください。