Webアプリに検証を実装しています...問題は、検証が過剰になっているように見えることです。
コントローラコードは次のようになります。
[HttpPost]
[Authentication]
public ActionResult Create([Bind(Exclude = "Id")] CaseInfo caseInfo)
{
if (!ModelState.IsValid)
{
SetupViewData();
return View();
}
_repository.Create(caseInfo);
return RedirectToAction("List");
}
これはCaseInfoの実装です。
public class CaseInfo :IValidatableObject
{
public virtual Guid Id { get; set; }
public virtual DateTime ReferralDate { get; set; }
public virtual int Decision { get; set; }
public virtual string Reason { get; set; }
public virtual DateTime StartDate { get; set; }
public virtual DateTime EndDate { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
throw new NotImplementedException();
}
}
そして私のCaseInfoMap:
public sealed class CaseInfoMap : ClassMap<CaseInfo>
{
public CaseInfoMap()
{
Id(x => x.Id).Not.Nullable();
Map(x => x.ReferralDate);
Map(x => x.Decision);
Map(x => x.Reason);
Map(x => x.StartDate);
Map(x => x.EndDate);
}
}
しかし、それを実行して値なしでフォームを送信すると、次の検証エラーが発生します。
# The ReferralDate field is required.
# The StartDate field is required.
# The EndDate field is required.
しかし、私はこれらが必要であるべきだと指定していませんか?!! そして、なぜ決定フィールドと理由フィールドが同様の検証エラーをスローしないのですか?
誰かがこれに光を当てることができますか?
.NET4とMVC2を使用しています。