валидация сервисов ria

Я тренируюсь проверять свою сущность на клиенте, но это не работает. У меня есть «требуемые» и атрибуты диапазона и длины строки. Проблема в том, что требуется только проверка на стороне клиента. У меня есть метод проверки на клиенте, прежде чем я вызову SubmitChanges. Но проверяется только обязательный атрибут. Затем вызывается SubmitChanges и возникает исключение, потому что у меня все еще есть ошибки проверки диапазона или длины строки. Я использую TryValidateObject: все в порядке?

Пожалуйста помоги :-)


person Daniel    schedule 22.02.2011    source источник


Ответы (2)


Когда вы вызываете SubmitChanges, он возвращает SubmitOperation со свойством HasError. Если это так, то это означает, что один или несколько объектов находятся в состоянии Error. Вы также можете использовать свойство EntitiesInError, которое вернет вам все объекты с любыми ошибками, включая validationErrors.

TestDomainContext tdc = new TestDomainContext();
SubmitOperation so = tdc.SubmitChanges();
if (so.HasError)
{
  foreach (Entity entity in so.EntitiesInError)
  {
      if (entity.ValidationErrors.Count() > 0)
         //Loop through validation errors to see what property is in error
  }
  so.Cancel();
}

Это дает вам больший контроль над ошибками, чем выполнение TryValidate. Вы также можете отменить SubmitOperation, если в нем есть ошибки...

person TBohnen.jnr    schedule 22.02.2011

Проверка не может быть выполнена, так как TryValidateObject выполняет только «обязательную» проверку. Мы должны установить для последнего параметра значение true, чтобы проверить все типы проверки (Range Stringlength...). Конечно, проверка в методе SubmitChanges также неплоха, и она не отправляется на сервер для проверки, если она уже может выполнять проверку на стороне клиента.

person Daniel    schedule 23.02.2011
comment
Вы смешиваете и сопоставляете свои атрибуты проверки из разных фреймворков? - person BenCr; 21.03.2011