서버와 클라이언트간에 공유되는 ValidationAttribute가 있습니다. 데이터 도우미 클래스 내에서 참조 될 때 클라이언트에 제대로 생성되도록 유효성 검사 속성을 얻으려면 필자가 작성한 방법에 매우 구체적이어야했습니다.ValidationArribute가 올바르게 표시되지 않았습니다.
내가 가지고있는 문제는 사용자 지정 유효성 검사 특성 클래스에서 ValidationResult를 반환 할 때 어떤 이유로 클라이언트 UI의 다른 유효성 검사 특성과 동일하게 처리되지 않는다는 것입니다. 오류를 표시하는 대신 아무 것도하지 않습니다. 객체의 유효성을 올바르게 검사하지만 실패한 유효성 검사 결과는 표시하지 않습니다.
다음은 사용자 정의 유효성 검사 클래스 중 하나의 코드입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
namespace Project.Web.DataLayer.ValidationAttributes
{
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class DisallowedChars : ValidationAttribute
{
public string DisallowedCharacters
{
get
{
return new string(this.disallowedCharacters);
}
set
{
this.disallowedCharacters = (!this.CaseSensitive ? value.ToLower().ToCharArray() : value.ToCharArray());
}
}
private char[] disallowedCharacters = null;
private bool caseSensitive;
public bool CaseSensitive
{
get
{
return this.caseSensitive;
}
set
{
this.caseSensitive = value;
}
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null && this.disallowedCharacters.Count() > 0)
{
string Value = value.ToString();
foreach(char val in this.disallowedCharacters)
{
if ((!this.CaseSensitive && Value.ToLower().Contains(val)) || Value.Contains(val))
{
return new ValidationResult(string.Format(this.ErrorMessage != null ? this.ErrorMessage : "'{0}' is not allowed an allowed character.", val.ToString()));
}
}
}
return ValidationResult.Success;
}
}
}
이렇게하면 서버와 클라이언트 모두에서 내 속성보다 위에 사용하는 방법입니다.
[DisallowedChars(DisallowedCharacters = "=")]
그리고 바인딩을 설정하는 여러 가지 방법을 시도했습니다. 이들의
{Binding Value, NotifyOnValidationError=True}
뿐만 아니라
{Binding Value, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, ValidatesOnNotifyDataErrors=True}
아무도 그들도 항목을 확인 바인딩 된 폼을 만들기 위해 보이지 않는다. TextBoxes, XamGrids에 바인딩 된 값에이 특성을 사용하려고 시도했지만 어느 쪽도 올바르게 유효성을 검사하지 못했습니다.
이 문제는 서버 측에서 ValidationResult를 사용하려고 할 때만 나타나는 것으로 보입니다. 내 뷰 모델의 값에 대한 유효성 검사 결과를 사용하면 유효성을 올바르게 검사합니다. 그래도 제대로 생성 된 코드에서 유효성을 검사 할 수있는 방법을 찾아야합니다.
어떤 생각이라도 대단히 감사하겠습니다.
대단히 감사합니다. 그건 내 문제를 해결. –