c# - regulares - Invocación manual de la validación de ModelState
validar campos formulario mvc (3)
Estoy usando ASP.NET MVC 3 con código primero y he agregado anotaciones de datos de validación a mis modelos. Aquí hay un ejemplo de modelo:
public class Product
{
public int ProductId { get; set; }
[Required(ErrorMessage = "Please enter a name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required(ErrorMessage = "Please provide a logo")]
public string Logo { get; set; }
}
En mi sitio web tengo un proceso de varios pasos para crear un nuevo producto: el paso 1 ingresa detalles del producto, el paso 2 otra información, etc. Entre cada paso estoy almacenando cada objeto (es decir, un objeto Producto) en la Sesión, por lo que el usuario puede volver a esa etapa del proceso y modificar los datos que ingresó.
En cada pantalla tengo validación del lado del cliente que funciona con la nueva multa de validación jQuery.
La etapa final es una pantalla de confirmación después de la cual el producto se crea en la base de datos. Sin embargo, como el usuario puede saltar de una etapa a otra, necesito validar los objetos (Producto y algunos otros) para verificar que hayan completado los datos correctamente.
¿Hay alguna manera de llamar programáticamente la validación de ModelState en un objeto que tenga anotaciones de datos? No quiero tener que pasar por cada propiedad del objeto y hacer la validación manual.
Estoy abierto a sugerencias sobre cómo mejorar este proceso si facilita el uso de las características de validación del modelo de ASP.NET MVC 3.
Encontré esto para que funcione y funcione exactamente como se esperaba ... mostrando el ValidationSummary para un objeto recién recuperado en un método de acción GET ... antes de cualquier POST
Me.TryValidateModel(MyCompany.OrderModel)
Puede llamar al método ValidateModel
dentro de una acción del Controller
( documentación aquí ).
Puede usar ValidateModel
o TryValidateModel
en el alcance del controlador.
Cuando se valida un modelo, todos los validadores para todas las propiedades se ejecutan si al menos una entrada de formulario está vinculada a una propiedad del modelo. ValidateModel es como el método TryValidateModel excepto que el método TryValidateModel no arroja una excepción InvalidOperationException si la validación del modelo falla.
ValidateModel : arroja una excepción si el modelo no es válido.
TryValidateModel - devuelve el valor de bool que indica si el modelo es válido.
Si valida una lista de modelos uno por uno, querrá restablecer ModelState para cada iteración llamando a ModelState.Clear()
.