asp.net mvc - mvc - cambiar validar mensaje en la anotación de datos
mvc required field validation (2)
mi objeto tiene campo con tipo de datos int. cuando pongo el formulario html en esta letra de la caja de texto, no número, el validador dice- El campo debe ser un número. ¿Cómo puedo cambiar este mensaje así?
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
public int age { get; set; }
Me encontré con el mismo problema y lo solucioné especificando una expresión regular que solo permite números naturales positivos.
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")]
public int age { get; set; }
No estoy seguro de si hay alguna caída en esta solución. Parece funcionarme bien.
PD: Si no quieres permitir ceros a la izquierda usa "^[1-9]+[0-9]*$"
.
En retrospectiva: tengo que admitir que es un poco extraño agregar una expresión regular a un número entero.
No he encontrado una manera limpia de lograr esto utilizando Anotaciones de datos. Una forma sería escribir un encuadernador de modelo personalizado, pero esto parece mucho trabajo por hacer para una tarea tan simple.
Otra forma de lograr esto es agregar una carpeta App_GlobalResources
a su aplicación ASP.NET. Agregue un archivo de recursos llamado Messages.resx
contenga un recurso de cadena PropertyValueRequired
.
PropertyValueRequired = "Some custom error message"
En su Application_Start
registre la clave de clase de recurso:
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
DefaultModelBinder.ResourceClassKey = "Messages";
}
Tenga en cuenta que ASP.NET MVC 2 usa la clave de recurso PropertyValueInvalid
lugar de PropertyValueRequired
.
IMO utilizando anotaciones de datos para realizar la lógica de validación es limitado (tal vez en .NET 4 esto cambiará). Si quiere tener un control total sobre la lógica de validación, le recomendaría usar una biblioteca de validación como Validación fluida o xVal .