tutorial paso net mvc data custom asp annotation asp.net-mvc validation

asp.net-mvc - paso - mvc required field validation



Validación de datos de formularios publicados en el marco ASP.NET MVC (6)

¿Has echado un vistazo a esto? http://www.codeplex.com/MvcValidatorToolkit

Citado de la página

Validator Toolkit proporciona un conjunto de validadores para la nueva estructura ASP.NET MVC para validar formularios HTML en el cliente y el lado del servidor utilizando conjuntos de validación.

Me temo que alguien más experto en MVC que yo tendría que hablar de dónde en la arquitectura deberías poner las cosas.

He estado jugando con el ASP.NET MVC Framework y lo que realmente me confunde es cómo debo hacer la validación del lado del servidor de los datos del formulario publicado. Supongo que no vuelvo a publicar en la misma URL, pero si no lo hago, ¿cómo puedo volver a mostrar el formulario con los datos ingresados ​​y los mensajes de error? Además, ¿a dónde debe ir la lógica de validación? En el modelo o el controlador? Esta parece ser una de las pocas áreas donde los formularios web son mucho más fuertes (extraño los controles de validación).


Aquí hay una descripción general del flujo en MVC:

  1. / nuevo: represente su vista "Nueva" que contiene un formulario para que el usuario complete
    • El usuario rellena el formulario y se publica en / crea
    • La publicación se enruta a la acción Crear en su controlador
    • En su método de acción, actualice el modelo con los datos que se publicaron.
    • Su modelo debe validarse a sí mismo.
    • Su controlador debe leer si el modelo es válido.
    • Si el Modelo es válido, guárdelo en su db. Redirigir a / mostrar para mostrar la vista del espectáculo para su objeto.
    • Si el Modelo no es válido, guarde los valores de formulario y los mensajes de error en TempData y redirija a la acción Nueva nuevamente. Complete los campos de su formulario con los datos de TempData y muestre los mensajes de error.

Los marcos de validación lo ayudarán en este proceso. Además, creo que el equipo ASP.NET MVC está planificando un marco de validación para la próxima vista previa.


También estoy aprendiendo el framework MVC, así que no estoy seguro de qué tan apagado esté, pero por lo que entiendo, tendrías un formulario en una Vista como Edit.aspx. Este formulario luego se publicará en el controlador a otro método de acción como Actualizar () pasando los contenidos del formulario que establece en Edit.aspx como parámetros.

Update(int id, string name, string foo)

Podrías hacer la validación dentro de ese método. Si todo está bien,

return View("Item", yourObject)


Hay un módulo Castle.Components.Validator en el proyecto Castle. Es muy ágil y poderoso. Genera reglas de validación basadas en los atributos del modelo (o cualquier otra fuente) e incluso puede generar validación JS usando jQuery, validación de prototipo, validación de f y otros. Por supuesto, es conveniente abstraer el validador detrás de la interfaz IValidationEngine.



Hasta donde puedo decir, todos todavía están tratando de descubrir la forma "estándar" de hacerlo. Dicho esto, definitivamente echa un vistazo a las últimas publicaciones de Phil Haack y Scott Guthrie en MVC y encontrarás información interesante sobre cómo lo hicieron. Cuando solo estaba jugando conmigo mismo, creé un ModelBinder para la clase de datos LinqToSql que había generado. Puede consultar esta publicación para descubrir cómo armar un ModelBinder básico:

Carpeta modelo ASP.Net MVC

En su acción, si hubiera creado un ModelBinder de "Producto", simplemente declararía la acción de la siguiente manera:

public ActionResult New (Product prod)

Y el archivador modelo se encargará de asignar los datos publicados a las propiedades de los objetos, siempre y cuando lo hayas construido correctamente de todos modos.

Después de eso, en su método GetValue () puede implementar cualquier validación que desee, ya sea utilizando excepciones, expresiones regulares o lo que sea que pueda hacer una llamada como:

(ModelStateDictionary_name) .AddModelError ("form_element_id", "entered_value", "error_message");

Luego puede lanzar un <% = Html.ValidationSummary ()%> en su vista para mostrar todos sus errores.

Para la validación del lado del cliente acabo de utilizar jQuery. Después de obtener una configuración básica de muestra, puede comenzar a hacer cosas interesantes combinando todo eso con vistas parciales y llamadas Ajax.