Mi objetivo es validar una entrada del usuario en el lado del cliente, dependiendo de la cultura de los usuarios.ASP.NET MVC 3 RC 2 validación del lado del cliente con globalización
que tienen un modelo de datos primitiva con la siguiente estructura:
public class User
{
public int UserId { get; set; }
[Required]
[StringLength(20,MinimumLength=3)]
public string Name { get; set; }
[Required]
public double Height { get; set; }
}
Por otra parte, quiero tener habilitada la validación del lado del cliente, comprobar si es un número válido. Por lo tanto, he agregado las siguientes líneas en la sección <head>
de mi _Layout.cshtml.
<script src="@Url.Content("~/Scripts/jQuery-1.4.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
Desde que quieren tener la capacidad de validar la entrada en otros formatos de lenguaje (en este contexto particular, que es alemán con el formato de número decimal de 0,75
mientras que en los EE.UU. sería 0.75
), he añadido las siguientes líneas (jQuery Globalization PlugIn) DESPUÉS de los jquery.validate.min.js
y jquery.validate.unobtrusive.min.js
anteriormente mencionados.
<script src="@Url.Content("~/Scripts/jquery.glob.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/globinfo/jquery.glob.de-de.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$.culture = jQuery.cultures['de-DE'];
$.preferCulture($.culture.name);
});
</script>
Además, he añadido la siguiente línea a la web.config
en la sección system.web
sólo para asegurarse de que la cultura alemana se selecciona siempre:
<globalization culture="de-DE" uiCulture="de-DE" />
Ahora estoy experimentando el siguiente comportamiento :
- Si escribo en
0,1
(nótese la 'ortografía' alemán) en el cuadro de texto para el valor de "Altura", el mensaje de error de validación 012 Aparecey no puedo enviar el formulario. - Si escribo en
0.1
(Inglés 'ortografía'), puedo enviar el formulario, pero la validación en el servidor devuelve el siguiente mensaje de error de validaciónThe value '0.1' is not valid for Height.
Así que ahora estoy en una especie de bloqueo de la muerte, donde No puedo salir.
Una vez más, mi objetivo es validar la entrada del número decimal en el lado del cliente Y del servidor, en función de la cultura de los usuarios (en este caso, está forzado a ser alemán). ¿Qué estoy haciendo mal?
¡Cualquier ayuda es muy apreciada! ¡Gracias de antemano!
Su 'if' identifica incorrectamente' 0' como un valor no válido; use 'return! isNaN (Globalization.parseFloat (value));' como el cuerpo de la función. –
¿Informó a los creadores de plugins? Por favor, hazlo si aún no lo has hecho. Estoy teniendo el mismo problema que sde, pero no quiero "hackear" con los métodos no oficiales o de sobreescritura. – toebens
Bueno, acabo de ahorrarme una tonelada de excavación de código: eres una estrella, ¡muchas gracias por la publicación del blog y compartir esto en SO! – Dav