asp.net-mvc - validationmessagefor - validate mvc form jquery
asp.net mvc 3-envío y validación de formularios ajax (2)
He estado usando el plugin de formulario jQuery de malsup por un tiempo para este propósito. Honestamente, no estoy familiarizado con AjaxHelper, pero parece que hará lo que estás buscando. En lo que respecta a la validación en el lado del cliente y del servidor, todo esto debería suceder de forma automática, siempre y cuando se esté utilizando el enlace del modelo y los atributos del espacio de nombres System.DataAnnotations.
public class MyModel
{
[Required(ErrorMessage = "Please enter your name")]
public String Name { get; set; }
[Required(ErrorMessage = "Please enter your email")]
public String Email { get; set; }
[Required(ErrorMessage = "Please enter a rating")]
[Range(1, 5, ErrorMessage = "The rating must be between 1 and 5")]
public Int32 Rating { get; set; }
}
[HttpPost]
public ActionResult Index(MyModel myModel)
{
if(ModelState.IsValid)
{
// good to go, put it in the DB or whatever you need to do
}
else
{
return View(model); // return the user back to the page, ModelState errors can be viewed using Html.ValidationSummary() or individual Html.ValidationMessageFor() calls
}
}
Si está realizando su propia validación del lado del servidor, puede crear su propio atributo de validación personalizado mediante la creación de un atributo que implemente ValidationAttribute, o simplemente agregar errores de validación llamando a ModelState.Errors.Add () (o algo por ahí, No tengo una referencia a mano)
Para el lado del cliente, MVC generará la validación del lado del cliente para usted en función de los atributos de las anotaciones de datos en su modelo.
Lo siento si ya se ha preguntado esto, pero he estado buscando por algún tiempo pero todo lo que he encontrado son publicaciones bastante antiguas (mvc1, mvc2). Tengo un formulario que me gustaría enviar a través de Ajax.
This parece que funcionaría pero no cubre la validación del lado del servidor.
1) ¿No estoy seguro de si debo usar AjaxHelper.BeginForm
o usar las llamadas de jquery en bruto ($.ajax)
? ¿Cuál es el enfoque recomendado aquí?
2) ¿Cómo manejo la validación del lado del cliente y del servidor? ¿Espero que el marco de mvc proporcione un mecanismo incorporado para lidiar con esto? Hay algunas validaciones que solo estoy haciendo del lado del servidor. ¿El uso de un ValidationSummary
todavía funcionaría aquí?
Estoy utilizando asp.net mvc3 / razor con validación javascript no intrusiva.
¡Gracias!
Edición: (según lo solicitado por Bobby B abajo). Esto se agregó meses después de hacer la pregunta, ya que un usuario quería saber cómo usar AjaxHelper
Este es el código javascript que utilicé:
<script type="text/javascript">
function ajaxValidate() {
return $(''form'').validate().form();
}
function getGbPostSuccess(ajaxContext){
// .... it is not necessary to do anything here.
}
function showFaliure(ajaxContext){
// handle failure
}
Fragmento de HTML:
@using (Ajax.BeginForm("Index", "Home", new AjaxOptions
{
UpdateTargetId = "form1",
InsertionMode = InsertionMode.Replace,
OnBegin = "ajaxValidate",
OnSuccess = "getGbPostSuccess",
OnFailure = "showFaliure"
}))
{
MVC.NET 3 ya tiene esto fuera de la caja. Solo asegúrese de tener ClientValidationEnabled habilitado en web.config. Mira this