Я использую ASP.NET MVC 2 и хочу выяснить, как повторно запустить проверку моей модели после того, как она была заполнена с помощью пользовательского binder.
Итак, я начну с пары связанных классов EF, Booking и Traveler (в каждом бронировании может быть один или несколько путешественников)
Вот класс друзей, который я использую, чтобы разместить проверку на Booking:
[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 ["Travelers"] по-прежнему содержит ошибку проверки, в которой говорится, что должен быть подключен хотя бы один путешественник.
Есть ли способ повторно запустить проверку после того, как привязка пользовательской модели сделала свое дело?