Sunucu ile İstemci arasında paylaşılan bir ValidationAttribute var. Doğrulama özniteliğinin bir veri yardımcı sınıfında başvurulan istemciye düzgün bir şekilde üretilmesini sağlamak için, onu nasıl oluşturduğum konusunda çok spesifik olmalıydım.ValidationEtrores özel ValidationAttribute düzgün görüntülenmiyor
Yapmakta olduğum sorun, bir nedenle, özel doğrulama özniteliği sınıfımdan bir ValidationResult döndürdüğümde, istemci UI'sindeki diğer doğrulama öznitelikleriyle aynı şekilde ele alınmamasıdır. Hatayı görüntülemek yerine hiçbir şey yapmaz. Nesneyi doğru şekilde doğrulayacak olsa da, yalnızca başarısız doğrulama sonucunu göstermiyor.
Özel doğrulama sınıflarımdan birinin kodu aşağıdadır.
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;
}
}
}
Özelliklerimi hem sunucum hem de istemcide bu şekilde kullanırım.
[DisallowedChars(DisallowedCharacters = "=")]
Ve bağlamayı ayarlamak için birkaç farklı yöntem denedim. Bunlardan
{Binding Value, NotifyOnValidationError=True}
yanı sıra
{Binding Value, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, ValidatesOnNotifyDataErrors=True}
Yok onlar da girişlerini doğrulamak bağlı formları yapmak gibi görünüyor. Bu özniteliği, TextBoxes, XamGrids'e bağlı olan değerlerde kullanmayı denedim ve bunların gerektiği gibi doğrulayamadıklarını.
Bu sorun, yalnızca sunucu tarafında ValidationResult'u kullanmaya çalıştığımda görünüyor. Doğrulama sonucumu, görünüm modelimde bir değerde kullanırsam, doğru bir şekilde doğrular. Bununla birlikte, üretilen kodu doğru şekilde doğrulamak için bir yol bulmam gerekiyor.
Herhangi bir düşünce çok takdir edilecektir.
Çok teşekkür ederim. Bu benim problemimi çözdü. –