2011-08-24 2 views
0

작동하지 않는 속성을 validaton 내가 지정 유효성 검사가 FormatErrorMessage에게 (캐릭터 이름) { 반환 및 String.format (ErrorMessageString, 이름) 트링 클라이언트 측면은 사용자 정의

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)] 
    public sealed class ValidateDublicateNameAttribute : ValidationAttribute, IClientValidatable 
    { 
     private const string _defaultErrorMessage = "Library with title {0} is already exist"; 
     private UnitOfWork unit = new UnitOfWork(); 

     public ValidateDublicateNameAttribute() 
      : base(_defaultErrorMessage) 
     { 
     } 
     public override s 

속성 만들었습니다; }

protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     string valueAsString = value as string; 
     ValidationResult result = ValidationResult.Success; 
     if (String.IsNullOrEmpty(valueAsString)) 
     { 
      if (unit.ResourceSrvc.GetLibraryByTitle(valueAsString) != null) 
      { 
       result = new ValidationResult(String.Format(_defaultErrorMessage,value)); 
      } 
     } 
     else 
     { 
      result = new ValidationResult("Title cant be empty or null"); 
     } 
     return result; 
    } 

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 
    { 
     var rule = new ModelClientValidationRule 
     { 
      ErrorMessage = this.ErrorMessage, 
      ValidationType = "dublicatename", 
     }; 
     yield return rule; 
    } 
} 

및 클라이언트 측에

public class ResourceLibraryModel 
{ 
    public Guid LibraryId { get; set; } 
    [Required] 
    [ValidateDublicateName(ErrorMessage="title cant dublicate")] 
    public string Title { get; set; } 
} 

를 사용하여 내 모델을 장식 한 내가하지 유효성 검사 매개 변수를 가지고 $ .validator를 작성하지 않은

<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 

     $.validator.addMethod("dublicatename", function (value, element, params) { 
      alert("test"); 
     }); 

    }); 
</script> 

있습니다. unobtrusive.adapters.add (....)

서버 측 유효성 검사가 완벽하게 작동하지만 cli 쪽은 작동하지 않습니다.

아이디어가 있으십니까?

이 나는 ​​문제가 jquery.validate.min.js 당신의 자바 스크립트 코드 후로드해야한다는 생각도

 @using (Ajax.BeginForm("CreateLibrary", "Resource", new AjaxOptions { OnSuccess = "RequestSucceeded"})) 
     { 
      @Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.") 
       <div> 
        @*<div style="margin-bottom:15px"> 
         <label><b>Library information:</b></label> 
        </div>*@ 

        <div class="editor-field"> 
         @Html.TextBoxFor(m => m.Title, new { @class = "logon-field" }) 
         @Html.ValidationMessageFor(m => m.Title) 
        </div> 
        <div class="editor-label"> 
         @Html.LabelFor(m => m.Title) 
        </div> 
       </div> 
} 
+0

무엇을보기가 생겼를? – link664

+0

질문을 편집했는데 이제는 웹 설정에 –

답변

0

입니다 ... 웹에서

0

그냥 추측하지만 활성화 클라이언트 측 유효성 검사 .config 파일?

<appSettings> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings> 

그래서이 링크에서 사용 클라이언트 측 검증 섹션 따르십시오 : http://www.asp.net/mvc/tutorials/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript

+0

보기가 포함되어 있으며 확인 작업이 필요합니다. –

+0

미안하지만 이해가되지 않습니다. 그게 효과가 있다는 뜻인가요? – link664

+0

유효성 검사가 작동하지만 사용자 정의 유효성 검사가 작동하지 않습니다. –

관련 문제