Pergunta

Estamos usando o XVAL e o padrão DataAnnotationsValidationRunner descrito aqui Para coletar erros de validação de nossos objetos de domínio e visualizar modelos no ASP.NET MVC. Eu gostaria de ter uma maneira de identificar esse corredor de validação quando duas propriedades não correspondem ao uso de DataNotações personalizadas.

No momento, sou forçado a fazê -lo fora do corredor, desta forma:

if (!(model.FieldOne == model.FieldTwo))
    errors.Add(new ErrorInfo("FieldTwo", "FieldOne must match FieldTwo", model.FieldTwo));

Minha pergunta é: isso pode ser feito usando atributos de validação no nível da propriedade, ou sou forçado a usar atributos de nível de classe (nesse caso, eu teria que modificar o corredor ... e minha pergunta de acompanhamento seria a melhor forma de para recuperá -los nesse caso).

Obrigado!

ATUALIZAR: Finalmente descobri como escrever a consulta do objeto para implementar a sugestão na resposta selecionada; Concate os resultados desta consulta com os resultados do corredor de validação padrão, se alguém estivesse curioso. Observe que eu mudei o tipoID para ser a propriedade Confirm Field.

var classErrorQuery =
      from attribute in
          instance.GetType().GetCustomAttributes(typeof (ValidationAttribute), false).Cast
          <ValidationAttribute>()
      where !attribute.IsValid(instance)
      select new ErrorInfo(attribute.TypeId.ToString(), attribute.FormatErrorMessage(string.Empty), instance);
Foi útil?

Solução

Vejo Escrevendo um atributo comparto deannotation

E também você pode verificar a CouctModel no projeto padrão do MVC2, existe um atributo PropertiesMustMatchattribute aplicado ao alteração Moda

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top