【发布时间】:2010-09-21 04:37:56
【问题描述】:
我正在使用 ASP.NET MVC 2,并想知道如何在使用自定义活页夹填充模型后重新触发验证。
所以,我从几个相关联的 EF 类开始,Booking 和 Traveler(每个预订可以有一个或多个 Traveler)
这是我用来在 Booking 上放置 balidation 的好友类:
[MetadataType(typeof(Booking_Validation))]
public partial class Booking {
// partial class compiled with code produced by VS designer
}
[Bind(Include="Name")]
public class Booking_Validation {
[Required(ErrorMessage="Booking name required")]
public string Name { get; set; }
[AtLeastOneTraveller(ErrorMessage="Please enter at least one traveller")]
public EntityCollection<Traveller> Travellers;
}
public class AtLeastOneTraveller : ValidationAttribute {
public override bool IsValid(object value) {
if (value != null)
return ((EntityCollection<Traveller>)value).Count > 0;
return true;
}
}
我使用自定义模型绑定器来填充预订及其关联的旅行者,除了 ModelState.IsValid 似乎甚至在我的自定义模型绑定器有机会将旅行者添加到预订对象之前就已设置,即使在完成之后也是如此因此,ModelState["Travellers"] 仍然包含验证错误,指出必须至少连接一名旅行者。
有没有办法在自定义模型绑定完成后重新触发验证?
【问题讨论】:
标签: asp.net-mvc custom-model-binder