Saltar al contenido

Utilizando [JsonProperty(“name”)] en ModelState.Errors

Mantén la atención ya que en esta reseña vas a hallar la contestación que buscas.Este enunciado ha sido evaluado por nuestros expertos para garantizar la calidad y veracidad de nuestro post.

Solución:

¿Intentaste usar DisplayName attribute?

nombre para mostrar attribute vs pantalla attribute

Además, puede asignar un mensaje de error a [Required] attribute.

[Required(ErrorMessage = "Name is required")]

También enfrenté este problema, modifiqué un código de su enlace para que se ajuste a mi WebAPI. modelState también almacenará el viejo key que es el nombre de la variable del modelo, más los nombres de las propiedades Json.

  1. Primero, crea el filtro. ValidateModelStateFilter
  2. Agregar [ValidateModelStateFilter] método del controlador anterior

El código fuente del filtro:

public class ValidateModelStateFilter : ActionFilterAttribute

    public override void OnActionExecuting(HttpActionContext actionContext)
    
        var descriptor = actionContext.ActionDescriptor;
        var modelState = actionContext.ModelState;

        if (descriptor != null)
        
            var parameters = descriptor.GetParameters();

            var subParameterIssues = modelState.Keys
                                               .Where(s => s.Contains("."))
                                               .Where(s => modelState[s].Errors.Any())
                                               .GroupBy(s => s.Substring(0, s.IndexOf('.')))
                                               .ToDictionary(g => g.Key, g => g.ToArray());

            foreach (var parameter in parameters)
            
                var argument = actionContext.ActionArguments[parameter.ParameterName];

                if (subParameterIssues.ContainsKey(parameter.ParameterName))
                
                    var subProperties = subParameterIssues[parameter.ParameterName];
                    foreach (var subProperty in subProperties)
                    
                        var propName = subProperty.Substring(subProperty.IndexOf('.') + 1);
                        var property = parameter.ParameterType.GetProperty(propName);
                        var validationAttributes = property.GetCustomAttributes(typeof(ValidationAttribute), true);

                        var value = property.GetValue(argument);

                        modelState[subProperty].Errors.Clear();
                        foreach (var validationAttribute in validationAttributes)
                        
                            var attr = (ValidationAttribute)validationAttribute;
                            if (!attr.IsValid(value))
                            
                                var parameterName = GetParameterName(property);
                                // modelState.AddModelError(subProperty, attr.FormatErrorMessage(parameterName));
                                modelState.AddModelError(parameterName, attr.FormatErrorMessage(parameterName));
                            
                        
                    
                


            
        

    

    private string GetParameterName(PropertyInfo property)
    
        var dataMemberAttribute = property.GetCustomAttributes().FirstOrDefault();
        if (dataMemberAttribute?.Name != null)
        
            return dataMemberAttribute.Name;
        

        var jsonProperty = property.GetCustomAttributes().FirstOrDefault();
        if (jsonProperty?.PropertyName != null)
        
            return jsonProperty.PropertyName;
        

        return property.Name;
    

Aquí tienes las reseñas y calificaciones

Si sostienes alguna incertidumbre y capacidad de ascender nuestro ensayo eres capaz de realizar un paráfrasis y con mucho placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *