La guía o código que encontrarás en este post es la resolución más eficiente y válida que encontramos a esta duda o problema.
Solución:
En caso de que alguien tropiece con este hilo en el futuro, lo llevé un poco más lejos y agregué un mensaje público. string array propiedad que acepta los valores permitidos en el filtro de validación. Esto le permitirá proporcionar una colección de cadenas válidas en el attribute decorador.
De esta manera, ahora tiene un genérico reutilizable attribute puede usar en cualquier momento para limitar un modelo string propiedad a un conjunto predefinido de valores. Ya que es una validación attributetambién puede decorarlo con un mensaje de error más informativo.
Ejemplo de uso:
public class Person
[StringRange(AllowableValues = new[] "M", "F" , ErrorMessage = "Gender must be either 'M' or 'F'.")]
public string Gender get;set;
Atributo de cadena:
public class StringRangeAttribute : ValidationAttribute
public string[] AllowableValues get; set;
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
if (AllowableValues?.Contains(value?.ToString()) == true)
return ValidationResult.Success;
var msg = $"Please enter one of the allowable values: string.Join(", ", (AllowableValues ?? new string[] "No allowable values found" )).";
return new ValidationResult(msg);
Para validar la propiedad Sexo he creado una validación personalizada attribute creando una nueva clase (attribute):
using System;
using System.Collections.Generic;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MyProject.Models.Validation
public class StringRangeAttribute : ValidationAttribute
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
if(value.ToString() == "M"
puedes usar una expresión regular como esta:
[RegularExpression("M|F", ErrorMessage = "The Gender must be either 'M' or 'F' only.")]
public string Gender get; set;
pero en mi api mostrará un mensaje de error cuando pasé datos para que pueda agregar
[StringLength(1, MinimumLength = 1, ErrorMessage = "The Gender must be 1 characters.")]
codigo final:
[StringLength(1, MinimumLength = 1, ErrorMessage = "The Gender must be 1 characters.")]
[RegularExpression("M|F", ErrorMessage = "The Gender must be either 'M' or 'F' only.")]
public string Gender get; set;
Comentarios y valoraciones del tutorial
Si piensas que ha sido provechoso nuestro artículo, sería de mucha ayuda si lo compartieras con más programadores de esta forma nos ayudas a dar difusión a nuestro contenido.