更新后我遇到以下问题。
我有一个带有类级别验证的模型以及其中的属性级别验证。更新到MVC 2 RC 2.模型验证在模型绑定上失败。我真正理解的是,当你第一次请求它或者在GET上说它时,尝试验证模型的新机制在tryvalidatemodel模型绑定调用期间它会得到空对象异常。
我的模型如下所示
[Serializable]
[MetadataType(typeof(InterestClaimMetaData))] //metadata with all properties level validation
//these validations fails when you request a page.
[DateComparison("DateA", "DateB", eDateComparitor.GreaterThan,
ErrorMessage = "Date A must be greater than B Date")]
[MutuallyExclusive("A", "B", ErrorMessage = "Please select either A or B field")]
public class IE {
public int ID { get; set; }
public byte[] Updated { get; set; }
}
DataComparison和MutuallyExclusive会覆盖验证功能无效并检查验证,但它无法尝试按首次请求进行验证。 不知道如何阻止这种情况发生,因为它不应该在获取请求上验证模型;只需附上属性。
只有没有这些级别验证的模型才有效。
请指教。 感谢
答案 0 :(得分:0)
将控制器中的操作方法分为两种操作方法。将一个标记为GET,将另一个标记为POST。然后仅在POST方法中应用验证。因此,例如,如果您当前有一个名为Create的方法,看起来像这样......
public ActionResult Create(YourModel yourModel)
{
// Some code in here to validate stuff
// Some code in here to do stuff
return RedirectToAction("Index");
}
将其拆分为两个类似的方法......
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(YourModel yourModel)
{
try
{
// Some code in here to validate stuff
// Some code in here to do stuff
return RedirectToAction("Index");
}
catch
{
return View();
}
}