2012-08-06 23 views
6

Estoy trabajando en una aplicación MVC 3. Uno de los campos en el modelo es de tipo doble y define de la siguiente manera:Cómo cambiar el valor predeterminado "El campo debe ser un número"

[Required(ErrorMessageResourceName = "ListingItemPriceRequired", ErrorMessageResourceType = typeof(ErrorMessages))] 
    [Display(Name = "DisplayListingItemPrice", ResourceType = typeof(Display))] 
    [Range(1, 500000000, ErrorMessageResourceName = "ListingItemPriceNotWithinRange", ErrorMessageResourceType = typeof(ErrorMessages))] 
    public double Price { get; set; } 

Sin embargo, cuando entro en un valor de un número con algunos espacios finales como "342", me sale el mensaje predeterminado "El campo el precio debe ser un número ".

Incluso el atributo de validación en el campo de entrada Precio tiene algo como "data-val-number".

Gracias

Respuesta

4

El mensaje predeterminado se cuece profundamente en el marco, como un recurso de cadena. Se agrega mediante el enlace de modelo predeterminado al intentar vincular el valor de cadena a un tipo doble. Por lo tanto, si desea cambiar este mensaje predeterminado, puede escribir un archivador de modelo personalizado. He aquí un ejemplo que escribí para el tipo DateTime que tiene el mismo problema: https://stackoverflow.com/a/7836093/29407

+0

Gracias Darin. Para cada tipo de datos, ¿hay una carpeta modelo? por cierto, ¿tienes un blog? – Bill

+3

Implementé un archivador de modelo personalizado, pero aún en el lado del cliente, se muestra la misma oración, la predeterminada. ¿Cómo inyectar otro mensaje incluso en el lado del cliente? Gracias – Bill

3

me pareció más fácil decir simplemente:

[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")] 
+0

Esta es una forma mucho más simple de hacerlo. – Sprintstar

14

Si estás bien con cambiar sólo el lado de validación discreta de las cosas, siempre se puede suministrar atribuye a su propia validación jQuery:

@Html.TextBoxFor(model => model.Price, new Dictionary<string, object>() { { "data-val-number", "Price must be a valid number." } }) 

O bien, el siguiente es más simple que reemplaza MVC subraya con guiones en los nombres de atributos:

@Html.TextBoxFor(model => model.Price, new { data_val_number = "Price must be a valid number." }) 
+0

Awesome solution @ScottE, literalmente, me buscaron en Internet pero no encontré ninguna solución relavent. Esto funciona genial Gracias...!!!!! –

Cuestiones relacionadas