Я играл с валидацией DataAnnotation asp.net mvc 2.Это очень хорошо подходит для проверки на стороне клиента.Мне действительно нравится, что я могу просто определить один набор правил и иметь возможность использовать его как на стороне клиента, так и на стороне сервера.
Мне интересно, возможно ли это сделать с помощью формы asp.net.В следующем фрагменте кода показано, как это делается, и он отлично работает для простой проверки данных на стороне сервера после создания объекта.
Однако я хотел бы повторно использовать проверки на стороне клиента (jQuery илибиблиотека javascript asp.net), поэтому мне не нужно определять 2 набора определения проверки на сервере / клиенте.
[DataMember, DisplayName("Prop A Description")]
[Required(ErrorMessage = "PropertyA is required.")]
[RegularExpression(@"^[0-9]*(\.)?[0-9]+$", ErrorMessage = "PropertyA format invalid")]
public string Property { get; set; }
, и я создал следующий метод в базовом классе для проверки
public bool IsValid()
{
bool result = true;
PropertyInfo[] properties = this.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
//Get all the custom validation attributes
var cusAttributes = property.GetCustomAttributes(typeof(ValidationAttribute), true).OfType<ValidationAttribute>();
foreach (var attribute in cusAttributes)
{
//validate individual attribute base on it's custom attribute.
Boolean isValid = attribute.IsValid(property.GetValue(this, null));
//if attribute is not valid, log it to the ErrorMessage Collection
if (!isValid)
{
this.ErrorMessages.Add(new ErrorSummary() { ErrorMessage = attribute.ErrorMessage });
result = false;
}
}
}
return result;
}