2012-04-25 1 views
4

내가 정의를 만들 ValidationAttribute 시도 작동하지 않습니다 :사용자 정의 ValidationAttribute는

 <div class="editor-label"> 
      Try: 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Try) 
      @Html.ValidationMessageFor(model => model.Try) 
     </div> 

"범위"에 대한 유효성 검사는 훌륭하지만 맞춤식 검사에는 효과가 없습니다!

무엇이 문제 일 수 있습니까?

+0

참고하십시오 이 수업에서. 새로운 이름으로'[RollType]'을 사용할 수 있습니다. – Joe

답변

7

즉`RollTypeAttribute` 권장 이름입니다 예를,이

또한
public class RollType : ValidationAttribute 
{ 
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     return new ValidationResult("Something went wrong"); 
    } 
} 

이 modelstate 뒤에 그렇지 않으면 작동하지 않습니다 코드의 유효 여부를 확인하는 것을 잊지 마세요

[HttpPost] 
    public ActionResult Create(SomeObject object) 
    { 
     if (ModelState.IsValid) 
     { 
      //Insert code here 
      return RedirectToAction("Index"); 
     } 
     else 
     { 
      return View(); 
     } 
    } 
+0

는 "오류 'RollType.IsValid (객체, System.ComponentModel.DataAnnotations.ValidationContext는)': '보호'재정의하는 경우 액세스 한정자를 변경할 수 없습니다 멤버 'System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid (객체, System.ComponentModel 상속 .DataAnnotations.ValidationContext) '\t " – TamarG

+1

죄송합니다. 방금 실수를 수정했습니다. public override가 아닌 protected override가 필요하므로 지금 작동합니다. – Tenerezza

+2

또한 성공 메시지를 사용하려면 'return ValidationResult.Success;'를 사용하십시오. – Tenerezza