2010-03-13 14 views
7

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 estos mensajes como éstecambio validar mensaje en la anotación de datos

[Required(ErrorMessage = "Введите название")] 
    [DisplayName("Название")] 
    public int age { get; set; } 
+0

¿Alguna razón por la cual esta pregunta ha sido downvoted? Por favor, deje un comentario cuando downvoting una pregunta. En mi humilde opinión es una buena pregunta. –

+0

No todos entienden ruso. el texto del atributo debe estar en inglés. –

Respuesta

4

no he encontrado una manera limpiapara 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 que contiene un recurso de cadena PropertyValueRequired.

PropertyValueRequired = "Some custom error message" 

en su registro de la clave Application_Start clase de recurso:

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    DefaultModelBinder.ResourceClassKey = "Messages"; 
} 

Tenga en cuenta que ASP.NET MVC 2 utiliza la clave de recursos PropertyValueInvalid en lugar de PropertyValueRequired.

IMO usando anotaciones de datos para realizar la lógica de validación es limitado (tal vez en .NET 4 esto cambiará). Si desea tener un control total sobre la lógica de validación, le recomendaría usar una biblioteca de validación como Fluent Validation o xVal.

+0

He tenido exactamente el mismo problema. También pasé de anotaciones de datos a Validación fluida. Encuentro que la validación con fluidez es realmente útil y fácil de personalizar. –

+0

¿Alguna de las razones por las que recomienda Fluentvalidation? ¿Es mejor que el bloque de aplicación de validación de Enterprise Library? Por cierto, xVal actualmente está en desuso. –

+0

Recomiendo FV porque es liviano, permite expresar reglas de validación complejas de una manera elegante, proporciona una API para probar fácilmente las reglas de validación y tiene una gran integración con ASP.NET MVC. –

2

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 de esta solución. Parece funcionarme bien.

PD: Si no quiere permitir ceros a la izquierda use "^[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.

Cuestiones relacionadas