Tengo la siguiente clase modelo (despojado por simplicidad):ASP.NET MVC enlazador predeterminado: enteros demasiado tiempo, el mensaje de error de validación vacío
public class Info
{
public int IntData { get; set; }
}
Ésta es mi forma de afeitar que utiliza este modelo:
Ahora si ingreso datos no numéricos en el cuadro de texto, recibo un mensaje de validación correcto, es decir: "Valor 'qqqqq' no es válido para el campo 'IntData'".
Pero si ingreso una secuencia muy larga de dígitos (como 345234775637544), recibo un resumen de validación EMPTY.
En mi código del controlador, veo que es ModelState.IsValid
false
como se esperaba, y ModelState["IntData"].Errors[0]
es el siguiente:
{System.Web.Mvc.ModelError}
ErrorMessage: ""
Exception: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
(exception itself) [System.InvalidOperationException]: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
InnerException: {"345234775637544 is not a valid value for Int32."}
Como se puede ver, la validación funciona normalmente, pero no cede un mensaje de error el usuario.
¿Puedo modificar el comportamiento del encuadernador de modelo predeterminado para que muestre un mensaje de error adecuado en este caso? ¿O tendré que escribir una carpeta personalizada?
Gracias, voy a optar por esta solución si no voy a poder modificar el encuadernador predeterminado. – Zruty
Sugiero cambiar 'bindingContext.ModelName' a' bindingContext.ModelMetadata.DisplayName' si desea el nombre de campo localizado sobre el atributo '[Display (Name = ...)]'. – Gh61