c# - tutorial - ¿Cuál es la mejor forma de implementar la validación de campo con ASP.NET MVC?
tag helpers asp net core (16)
¿Cómo se maneja AJAX en Stack Overflow? ¿JQuery lo hace?
- Haga clic derecho en la página
- Busque ''Ver fuente de página'' en el menú emergente
- Pinchalo
:-)
Estoy construyendo un sitio web público usando ASP.NET, como parte de la entrega necesito hacer un sitio de administración para la entrada de datos de las cosas que se muestran en el sitio público, me preguntaba qué técnicas o procedimientos usan las personas para validar las entradas utilizando ASP .NET MVC.
escribió:
No puede usar los controles AjaxToolKit en ASP.NET MVC
¿Cómo se maneja AJAX en ? ¿JQuery lo hace? En su publicación Coding Horror Secretos de JavaScript Ninjas Jeff escribió sobre el uso de JQuery mientras escribía .
Seguramente no lo codificaron a mano. Lo hice una vez con todo el XMLHttpRequest JavaScript cuando el término "AJAX" se popularizó en 2005. Fue una pesadilla.
¿Has mirado los controles provistos con AjaxToolKit? He usado MaskedEditExtender y ValidatorCalloutExtender y he estado muy satisfecho con los resultados.
@Dale - ¡gracias por corregirme en eso! No estaba al tanto de eso (recién comencé a usar el kit de herramientas la semana pasada). Por favor, ignora mi sugerencia :)
@ - No te preocupes. Para eso es SO. Aprendes algo y la persona que hace la pregunta aprende algo.
@Chuck: aún no puede usar los controles AjaxToolKit en ASP.NET MVC. Solo funcionan en el modelo de postback de página ASP.NET.
Actualizar:
A partir del 20 de agosto de 2008, puede utilizar solo los archivos de secuencia de comandos de Ajax Control Toolkit dentro de ASP.NET MVC Framework. Aquí hay un enlace al release .
Además, aquí hay un tutorial sobre cómo usarlos para crear un calendario emergente de Stephen Walther.
Solo quiero asegurarme de que todos reciban la información correcta si leen este hilo.
Eche un vistazo al plugin JQuery Validation, este plugin es increíble, es fácil de implementar y tiene todas las características que pueda necesitar, incluida la validación remota a través de AJAX.
También se puede encontrar here un ejemplo de método de controlador MVC que básicamente utiliza el tipo de acción JsonResult como:
public JsonResult CheckUserName(string username)
{
return Json(CheckValidUsername(username));
}
Hay algunas características de validación nuevas en Vista previa 5.
IMO utilizando xVal con jQuery y DataAnnotationsModelBinder es la mejor combinación.
A veces, sin embargo, existen reglas de validación que no se pueden verificar por completo en el lado del cliente, por lo que debe utilizar la validación remota del lado del cliente.
Descubrí la manera de implementar genéricamente la validación remota del lado del cliente con xVal / jQuery.validate para que
- Las reglas de validación permanecen únicamente en su modelo ASP.NET MVC
- Usted escribe cada regla de validación solo una vez, y solo en el código C # fácil de probar. No hay JavaScript u otra contraparte del lado del cliente.
- No es necesario ramificar o modificar xVal o jquery.validate
- Todo lo que tiene que hacer para cada nueva regla de validación de formulario remota es derivar de la clase base que se muestra en este artículo.
Escribí un artículo de blog sobre esto que describe todos los detalles.
Me gusta usar la biblioteca LiveValidation dentro de mis aplicaciones ASP.NET MVC. Con él, pude configurar una forma de hacer la validación en el cliente y en el servidor. De esta forma, el usuario sabrá que algo está mal incluso antes de enviar el formulario y luego usará la funcionalidad del lado del servidor para los otros casos periféricos.
Comencé con esta publicación que hace un muy buen trabajo sobre cómo configurar una configuración similar:
Validación del lado del cliente basada en el modelo para ASP.NET MVC
Mi forma favorita de realizar validación de cliente y servidor utilizando atributos basados en modelos. Escribí una breve publicación sobre esto y también publiqué el código fuente, que básicamente te permitirá crear una clase como esta.
class User {
[Required]
public string Name{get;set;}
[Email][Required]
public string Email {get;set;}
}
Y el código JavaScript apropiado se generará para realizar la validación del cliente, así como el corredor de validación del lado del servidor validará el formulario enviado.
Lea la publicación here
Mi manera:
Estoy siguiendo el ejemplo que se muestra en el controlador de cuenta que se envió con la versión de Vista previa 4, donde el campo es verificar en el controlador y si se encuentra un error, se agrega una matriz de errores de cadena para mostrarla posteriormente en la misma vista que inició el solicitud.
También he estado siguiendo los pensamientos de Stephen Walther en MVC y creo que esta publicación es excelente para volver a llenar los campos con los datos enviados para que se modifique antes de volver a enviarlos.
¿Qué utilizan ustedes?
Puede usar el marco de validación de .net en codeplex si desea la validación del cliente / servidor. Genera código para el complemento de validación jQuery basado en reglas definidas en el modelo. Además, si usa la funcionalidad "avanzada" de la infraestructura, puede controlar manualmente la configuración de jQuery validate plugin. Verifique el inicio rápido de mvc .
Si desea seguir con la funcionalidad lista para usar, pero necesita ampliarla, mire mi respuesta aquí a una pregunta sobre IDataError.
Básicamente uso anotaciones de datos y un encuadernador para una lógica más complicada. He encontrado que es una manera bastante limpia y me permite permanecer dentro de los límites de lo que MS está proporcionando.
Explico cómo usar un encuadernador para agregar una verificación de ''nivel de clase'' de su modelo sin tener que usar IDataError
, que como ha visto aquí puede ser bastante torpe. Aún le permite usar atributos [obligatorios] o cualquier otro atributo de validación personalizado que tenga, pero le permite agregar o eliminar errores individuales del modelo. Para obtener más información sobre cómo utilizar las anotaciones de datos, recomiendo esta publicación de Scott Gu .
Una de las formas de implementar la validación en ASP.NET MVC es usar Anotaciones de datos junto con la validación del lado del cliente. Este article muestra cómo podemos hacer eso para las clases de modelo generadas por el marco de entidad.
Use un híbrido de validación del lado del cliente y validación del lado del servidor.
Para la validación del lado del cliente, el enfoque descrito en la respuesta de Daniel Pollard parece sólido. La validación del lado del cliente no es obligatoria, pero proporcionará al usuario una experiencia más agradable y mucho más receptiva.
La validación del lado del servidor, por otro lado, debe ser obligatoria: nunca confíe en la información del cliente. Definitivamente examinaría las capacidades proporcionadas por el marco ASP.NET MVC en la Vista previa 5 (como se describe en la respuesta de Matt Hinze ),
@ Zack : Yeap, también he leído esa publicación y, basado en esa publicación, SO usa jQuery como su biblioteca de JavaScript. No puedo hablar en nombre del equipo de SO, pero creo que es más que probable que estén usando las características de ajax dentro de jquery para manejar sus solicitudes de ajax. En realidad, no es tan malo la codificación a mano si utiliza una biblioteca de JavaScript como jQuery , Prototype y MooTools . Luego usa el nuevo valor de retorno JsonResult ActionResult para sus acciones y realiza solicitudes ajax contra ellas. Estas bibliotecas encapsulan los objetos XmlHttpRequest por usted y hacen que sea más fácil hacer que las llamadas ajax y el navegador sean seguros.