自定义模型绑定器 - 如何重新验证

我正在使用ASP.NET MVC 2,并且想要弄清楚如何在使用自定义绑定器填充模型后重新触发模型上的验证。 所以,我首先介绍几个相关的EF课程,预订和旅行者(每个预订可以有一个或多个旅行者) 这是我用来在预订时放置讽刺的好友课程:
[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 [“旅行者”]仍然包含验证错误,表示必须至少连接一位旅行者。 有没有办法在自定义模型绑定器完成它之后重新触发验证?     
已邀请:
你在
Controller
课上试过
TryValidateModel
方法吗? http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.tryvalidatemodel.aspx     
试试这个: http://shazwazza.com/post/Custom-MVC-ModelBinder-with-Complex-ModelsObjects-using-built-in-MVC-Validation.aspx     
修复错误项后,可以使用清除ModelState
ModelState.Clear();
然后重新使用
ModelState.IsValid
    

要回复问题请先登录注册