Я пытаюсь использовать объект IValidatableObject, как описано здесь http://davidhayden.com/blog/dave/archive/2010/12/31/ASPNETMVC3ValidationIValidatableObject.aspx.
Но он просто не срабатывает, когда я пытаюсь проверить, ModelState.IsValid
всегда true
.
Вот мой код модели:
[MetadataType(typeof(RegistrationMetaData))]
public partial class Registration : DefaultModel
{
[Editable(false)]
[Display(Name = "Property one")]
public int PropertyOne { get; set; }
}
public class RegistrationMetaData :IValidatableObject
{
[Required(ErrorMessage = "Customer no. is required.")]
[Display(Name = "Customer no.")]
public string CustomerNo { get; set; }
[Display(Name = "Comments")]
public string Comments { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (new AccountModel().GetProfile(CustomerNo) == null)
yield return new ValidationResult("Customer no. is not valid.", new[] { "CustomerNo" });
}
}
Я расширяю таблицу LINQ to SQL, которая называется Registration
, мое первое предположение состояло в том, что это невозможно сделать в классе Meta, но я 'я не уверен?
Я не получаю никаких ошибок, и он просто прекрасно работает, но метод Validate
не сработает.Что я пропустил?