Вызовите атрибут из одного класса в другой, чтобы сделать ValidationResult

Я ищу способ проверки моей модели с структурой сущностей , и с validationResult я получаю его, но только с одним классом, что вы предлагаете вызвать другим классом и проверить атрибут этого класса?

Пример:

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
        {
             if (ValorFacturado < (VozCargoAdicional + DatosCargoAdicional + OtrosCargosAdicional + CargoReposicionArmetales + CargoReposicionUsuario))
            {
                yield return new ValidationResult("Valor facturado es menor", new[] { "El valor es mayor que factura" });
        }

К этой сумме я должен добавить поле из другой модели.

2
задан 22.11.2016, 21:24
2 ответа

Я думаю, что твоя проблема состоит в том, что ты не определил хорошо твою модель. Модель в Asp.NET MVC может быть составленной нескольких моделей в свою очередь. У концепций организации и модели в этой архитектуре нет из-за quГ© совпадать. У тебя может быть организация Клиент например с 25 свойствами, но потом ClienteModel твоего Вида может содержать 5 из этих полей. Окончательно, модель в мою манеру видеть, - одна proyecciГіn одной или нескольких организаций. Ты можешь создавать asГ - твой model, чтобы мочь решать твою проблему

public class MiModeloCompuesto
{
     public MiModelo1 Modelo1 { get; set; }
     public MiModelo2 Modelo2 { get; set; }
}

Тогда с этим примером, ты можешь осуществлять ее validaciГіn MiModeloCompuesto и соглашаться на свойства Modelo1 и Modelo2. Я надеюсь заставить меня понимать. Привет

1
ответ дан 24.11.2019, 12:28

Привет способ санкционировать данные в твоей организации дела одна opciГіn serГ, - в который ты использовал Флуент Валидатион

JeremySkinner/FluentValidation

AcГЎ, у тебя есть один cГіdigo примера

public class ProductoValidator : AbstractValidator<Producto>
{
    public ProductoValidator()
    {
        CascadeMode = CascadeMode.Continue;
        RuleFor(x => x.Nombre)
            .NotEmpty().WithMessage("El Nombre no puede estar vacío")
            .Must(x => x.Length > 3).WithMessage("El Nombre, debe tener mas de tres caracteres")
            .Must(x => x.Length < 81).WithMessage("El Nombre, debe tener menos de 81 caracteres");

        RuleFor(x => x.CategoriaId)
            .NotNull().WithMessage("Favor de asignar un elemento")
            .NotEqual(0).WithMessage("Debe seleccionar Categoría");

        RuleFor(x => x.LineaId)
            .NotNull().WithMessage("Favor de asignar un elemento")
            .NotEqual(0).WithMessage("Debe seleccionar la Linea");

        RuleFor(x => x.ModeloId)
            .NotNull().WithMessage("Favor de asignar un elemento")
            .NotEqual(0).WithMessage("Debe seleccionar un Modelo");

        RuleFor(x => x.MarcaId)
            .NotEqual(0).WithMessage("Debe seleccionar una Marca")
            .NotNull().WithMessage("Favor de asignar un elemento");

    }
}

Другой пример

public class ProveedorValidator : AbstractValidator<Proveedor>
{
    public ProveedorValidator()
    {
        // Indicamos que la validación continue aún y cuando una de ellas falle.
        CascadeMode = CascadeMode.Continue;
        RuleFor(x => x.RazonSocial)
            .NotEmpty().WithMessage("La Razón Social no puede estar vacía")
            .Must(x => x.Length > 3).WithMessage("La Razón Social, debe tener mas de tres caracteres")
            .Must(x => x.Length < 81).WithMessage("La Razón Social, debe tener menos de 81 caracteres");

        RuleFor(x => x.DocumentoIdentidad)
            .NotNull().WithMessage("Favor de asignar un elemento")
            .NotEqual((EnumDocumentoEdentidad)Convert.ToInt32(-1)).WithMessage("Debe seleccionar Documento de Identidad");

        When(x => x.DocumentoIdentidad == EnumDocumentoEdentidad.DNI, () =>
          {
              RuleFor(x => x.NroDocumento)
              .NotNull()
              .NotEmpty().WithMessage("El Nro. de DNI, no puede estar vacía")
              .Length(8).WithMessage("El Nro. de DNI, debe de tener una longitud de '8' caracteres")
              .Must(x => x != "11111111" && x != "22222222"
                         && x != "33333333" && x != "44444444"
                         && x != "55555555" && x != "66666666"
                         && x != "77777777" && x != "88888888"
                         && x != "99999999").WithMessage("El Nro. DNI, no tiene un formato valido");
          });

        When(x => x.DocumentoIdentidad == EnumDocumentoEdentidad.RUC, () =>
        {
            RuleFor(x => x.NroDocumento)
            .NotNull()
            .NotEmpty().WithMessage("El Nro. de RUC, no puede estar vacía")
            .Length(11).WithMessage("El Nro. de RUC, debe de tener una longitud de '11' caracteres")
            .Must(x => x != "11111111111" && x != "22222222222"
                       && x != "33333333333" && x != "44444444444"
                       && x != "55555555555" && x != "66666666666"
                       && x != "77777777777" && x != "88888888888"
                       && x != "99999999").WithMessage("El Nro. RUC, no tiene un formato valido");
        });
    }
}

Ты можешь приспосабливать это к твоей необходимости.

2
ответ дан 24.11.2019, 12:28
  • 1
    Педро... добавляет пример, основанный на ссылке пожалуйста. Привет –  fredyfx 22.11.2016, 21:08
  • 2
    @fredyfx Уже измените ответ añ adiendo có я говорю примера –  Pedro Ávila 22.11.2016, 21:13
  • 3
    сейчас sí хороший ответ :D –  fredyfx 22.11.2016, 21:14
  • 4
    привет @fredyfx с этим примером, podrí чтобы вводить má s класса? например Выпиши счет-фактуру и Услуга? –  Drz 22.11.2016, 21:18
  • 5
    @Drz Таким образом создается класс validator каждой организацией дела, которое ты хотел бы санкционировать. –  Pedro Ávila 22.11.2016, 21:22

Теги

Похожие вопросы