http://davidhayden.com/blog/dave/archive/2010/12/31/ASPNETMVC3ValidationIValidatableObject.aspxで説明されているように、IValidatableObjectを利用しようとしています。
しかし、私が検証しようとしているときは起動しません。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をSQLテーブルと呼ばれるものに拡張しましたRegistration
。最初の推測では、これはMetaクラスでは実行できないと思いましたが、よくわかりません。
エラーは発生せず、正常にビルドされますが、Validate
メソッドは起動しません。私は何を逃しましたか?