¿Cuál es la mejor manera de implementar la validación de campos usando ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/16747

  •  08-06-2019
  •  | 
  •  

Pregunta

Estoy creando un sitio web público usando ASP.NET, como parte del entregable, necesito crear un sitio de administración para ingresar 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 usando ASP. .NETMVC.

¿Fue útil?

Solución

Échale un vistazo al Complemento de validación de JQuery Este complemento es sorprendente, es fácil de implementar y tiene todas las funciones que pueda necesitar, incluida la validación remota a través de AJAX.

También se puede encontrar un método de controlador MVC de muestra. aquí que básicamente usa el tipo de acción JsonResult como:

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}

Otros consejos

@Chuck: todavía no puedes usar los controles AjaxToolKit en ASP.NET MVC.Solo funcionan en el modelo de devolución de datos de páginas ASP.NET.

Actualizar:

A partir del 20 de agosto de 2008, puede utilizar únicamente los archivos de secuencia de comandos del kit de herramientas de control Ajax dentro del marco ASP.NET MVC.Aquí hay un enlace al liberar.

También, aquí hay un tutorial sobre su uso para crear un calendario emergente por Stephen Walther.

Solo quiero asegurarme de que todos reciban la información correcta si leen este hilo.

En mi opinión, usar 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 es necesario utilizar la validación remota del lado del cliente.

Descubrí una 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
  • Cada regla de validación se escribe solo una vez y solo en código C# fácilmente comprobable.No hay JavaScript ni ninguna otra contraparte del lado del cliente.
  • No es necesario bifurcar ni modificar xVal o jquery.validate
  • Todo lo que tiene que hacer para cada nueva regla de validación de formulario remota es derivarla de la clase base que se muestra en este artículo.

escribí un artículo de blog sobre esto describiendo todos los detalles.

me gusta usar el Validación en vivo biblioteca dentro de mis aplicaciones ASP.NET MVC.Con él, pude configurar una forma de realizar la validación en el cliente y en el servidor.De esa manera, el usuario sabrá que algo anda mal incluso antes de enviar el formulario y luego utilizará 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 modelos para ASP.NET MVC

A mi manera:

Estoy siguiendo el ejemplo que se muestra en el controlador de cuenta que se envió con la versión Preview 4, donde el campo es verificar en el controlador y, si se encuentra un error, se agrega una serie de errores de cadena para mostrarlos más adelante en la misma vista que inició el pedido.

También he estado siguiendo los pensamientos de Stephen Walther en MVC y yo pienso esta publicación Es fantástico volver a rellenar los campos con los datos enviados para cambiarlos antes de volver a enviarlos.

¿Qué utilizan ustedes?

¿Has mirado los controles proporcionados con AjaxToolKit?He utilizado MaskedEditExtender y ValidatorCalloutExtender y estoy muy satisfecho con los resultados.

@Dale: ¡gracias por corregirme en eso!No estaba al tanto de eso (empecé a usar el kit de herramientas la semana pasada).Por favor ignore mi sugerencia :)

@zack:Sí, también leí esa publicación y, según esa publicación, SO usa jQuery como su biblioteca de JavaScript.No puedo hablar por el equipo de SO, pero mi suposición es que lo más probable es que estén usando las funciones de ajax dentro de jquery para manejar sus solicitudes de ajax.En realidad, no es tan malo codificar a mano si usas una biblioteca de JavaScript como jQuery, Prototipo, y MooHerramientas.Luego, utiliza el nuevo valor de retorno JsonResult ActionResult para sus acciones y realiza solicitudes ajax contra ellas.Estas bibliotecas encapsulan los objetos XmlHttpRequest y facilitan la seguridad de las llamadas ajax y del navegador.

Puedes usar el marco de validación .net en codeplex si desea validación tanto del lado cliente como del servidor.Genera código para el complemento de validación jQuery según las reglas definidas en el modelo.Además, si utiliza la funcionalidad "avanzada" del marco, puede controlar manualmente la configuración del complemento de validación jQuery.Revisar la inicio rápido de mvc.

Utilice 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 mejor y con mayor capacidad de respuesta.

La validación del lado del servidor, por otro lado, debería ser obligatoria:Nunca confíes en los comentarios del cliente.Definitivamente analizaría las capacidades proporcionadas por el marco ASP.NET MVC en la Vista previa 5 (como se describe en el respuesta de Matt Hinze),

Mi forma favorita es realizar la validación tanto del cliente como del 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 se generará el código JavaScript apropiado 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 nuevamente aquí

@Arrojar - No hay problema.Para eso está SO.Aprendes algo y la persona que hace la pregunta aprende algo.

¿Cómo se maneja AJAX en Stack Overflow?¿JQuery lo hace?

  • Haga clic derecho en la página
  • Busque 'Ver código fuente de la página' en el menú emergente.
  • Pinchalo

:-)

Si desea seguir con la funcionalidad lista para usar pero necesita ampliarla, eche un vistazo a mi respuesta aquí a una pregunta sobre IDataError.

Básicamente utilizo anotaciones de datos y un enlazador de modelos para una lógica más complicada.Descubrí que es una forma bastante limpia y me permite mantenerme dentro de los límites de lo que ofrece MS.

Explico cómo usar un modelbinder para agregar verificación 'a nivel de clase' de su modelo sin tener que usar IDataError - que como has visto aquí puede resultar bastante torpe.Todavía le permite usar atributos [Obligatorios] o cualquier otro atributo de validación personalizado que tenga, pero le permite agregar o eliminar errores de modelo individuales.Para obtener más información sobre cómo utilizar las anotaciones de datos, recomiendo encarecidamente esta publicación de Scott Gu.

Una de las formas de implementar la validación en ASP.NET MVC es utilizar anotaciones de datos junto con la validación del lado del cliente.Este artículo muestra cómo podemos hacer eso para las clases de modelo generadas por el marco de entidades.

Dale Ragan escribió:

No puedes usar los controles AjaxToolKit en ASP.NET MVC

¿Cómo se maneja AJAX en Stack Overflow?¿JQuery lo hace?En su publicación Coding Horror Secretos de los ninjas de JavaScript Jeff escribió sobre el uso de JQuery mientras escribía Stack Overflow.

Seguramente no lo codificaron a mano.Lo hice una vez con todo el JavaScript XMLHttpRequest cuando se popularizó el término "AJAX" alrededor de 2005.Fue una pesadilla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top