2011-05-20 75 views
1
public class SomeValidator : ValidationAttribute 
{ 
    public SomeValidator() 
     : base("Message") 
    { 

    } 

    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     return new ValidationResult("ERROR"); 
    } 

和:有效從未調用自定義驗證屬性

[SomeValidator] 
    public long Something { get; set; } 

爲什麼的isValid方法不會調用? (我使用ASP MVC 3)感謝您的幫助!

回答

1

你必須確保你有一個控制器行動採取這一模式作爲行動的說法:

public class MyViewModel 
{ 
    [SomeValidator] 
    public long Something { get; set; } 
} 

然後:

public ActionResult SomeAction(SomeModel model) 
{ 
    ... 
} 

,或者您叫UpdateModel/TryUpdateModel方法:

public ActionResult SomeAction() 
{ 
    var model = new SomeModel(); 
    if (TryUpdateModel(model)) 
    { 

    } 
    ... 
} 
+0

public override bool IsValid(object value)not invoking – petro 2011-05-20 17:10:37

+0

@petro,確保你有一個控制器動作,以'Something'屬性作爲參數。當您調用此操作時,會調用自定義驗證程序屬性。 – 2011-05-20 17:13:03

+0

好的,謝謝你的幫助 - 但是有可能避免創建模型並調用TryUpdateModel?我的意思是讓它像任何其他屬性一樣工作(需求,比較等)? – petro 2011-05-20 17:33:48

相關問題