Respuesta

2

La mayoría de los scripts de cliente abandonan el lado del servidor y solo lo hacen en el lado del servidor hoy en día. Puede usar ajax al enviar la publicación, de modo que la respuesta sea un poco más ligera que volver a cargar toda la página.

2

La validación del lado del servidor es necesaria simplemente porque se puede deshabilitar la validación del lado del cliente.

La validación del lado del cliente no es necesaria, pero hace que su aplicación sea más receptiva durante el manejo de errores, ya que no necesita enviar un formulario al servidor y esperar a que la página resultante regrese.

Una aplicación bien diseñada utiliza ambos.

Como nota al margen, Ajax se puede utilizar para ciertos tipos de validación, como la verificación de nombres de usuario duplicados en un formulario de registro de usuario. Sin embargo, la validación básica, como comprobar si un campo contiene solo números, debería realizarse sin ella.

+0

Esta realidad no responder a la pregunta. Es solo una definición de ambos, mientras él pregunta cómo evitar la duplicación de la lógica para ambos. –

0

Lo mejor es hacer la validación en el lado del servidor en la mayoría de los casos. Tienes muchas opciones diferentes para hacer esto más fácil, como Ajax o usar formularios adhesivos en PHP. Personalmente tiendo a hacer la validación en el lado del servidor porque el usuario tiene la opción de desactivar JavaScript y no pueden desactivar la validación en el servidor .....

5

Hay marcos que pueden generar el lado del cliente validación desde la configuración de validación en el servidor.

Ahora no sé qué idioma o marcos que está utilizando, pero tal vez este artículo puede ser de ayuda: http://www.emadibrahim.com/2008/09/08/client-server-side-validation-in-aspnet-mvc/

Está usando Castillo Validador componente junto con jQuery y añade un poco de pegamento para generar la validación del lado del cliente basada en los atributos de validación del lado del servidor. Es para asp.net mvc.

/Asger

+0

Estoy buscando algo que no sea MS, y el ejemplo en realidad no parecía simplificar las cosas en general. – josh

+0

Bueno, también debería ser posible transferir el principio a otras plataformas ... ¿qué idioma/framework/plataforma prefiere? – asgerhallas

2

Como han mencionado otros, usted debe tener la duplicación, ya que la validación del lado del cliente es para ayudar a la aplicación reaccionar cuanto antes para ayudar al usuario, pero, la validación real es en el lado del servidor, como nunca deberías confiar en algo pasado hasta que haya sido validado. Probablemente hará una validación más extensa en el lado del servidor, especialmente si hay una necesidad de verificar contra una fuente de datos, por ejemplo, si el nombre de usuario es único en el lado del servidor, pero si el nombre de usuario es lo suficientemente largo o dirección de correo electrónico, podría hacerse en el lado del cliente y en el lado del servidor.

Tiendo a poner comentarios cuando hay una duplicación, especialmente si estoy usando una expresión regular, para asegurarme de que los cambios en uno cambien en otro.

Las buenas pruebas unitarias ayudarán a garantizar que estas dos siempre permanezcan sincronizadas.

+0

¿Cómo se escribe una prueba de unidad que probará tanto el validador del lado del servidor como el del validador del lado del cliente? Parece que, en el caso normal, terminarías con un conjunto duplicado de pruebas unitarias (una para cada idioma), y esas pruebas unitarias podrían no sincronizarse. –

+0

Tendrá dos pruebas, pero la del lado del servidor hará más comprobaciones que la del lado del cliente, ya que el cliente solo está mirando para ver si los datos son más o menos correctos, pero la corrección absoluta es un trabajo para el servidor. –

0

Lo que puede hacer es tener la lógica de validación del lado del servidor ejecutada por los servicios web que su validación del lado del cliente puede llamar a través de AJAX y también cuando se publica nuevamente en su servidor.

0

Esto no es para responder a su pregunta, pero es posible que desee modificar su título para que no confunda al lector, a algo así como "¿Cómo mantener la validación en el servidor y el cliente sincronizados?"

La idea del título es bien a) dar al lector idea aproximada de lo que están pidiendo o b) hacer que el lector darse cuenta de que él/ella tiene que leer su contenido para entender su pregunta.

2

pienso la mejor manera es usar un componente que ofrezca ambas cosas. Su código ha sido probado y no es necesario que lo mantenga. He usado controles Peter Blum's en el pasado con gran éxito. Aparte de eso, creo que deberá mantener dos bases de código si desea ofrecer ambas. Hay una herramienta llamada Script# que puede ayudar a compilar C# a Javascript (realiza una traducción, no una compilación real), pero no estoy seguro de lo bien que funcionaría en esta situación.

Cuestiones relacionadas