2012-05-22 11 views
9

Estoy utilizando la validación remota para verificar la disponibilidad del nombre de usuario durante el registro para mi aplicación asp.net mvc 3 (C#).Haga algo en la respuesta de éxito para la validación remota en mvc

estoy usando la validación Atributo remota MVC como:

[Remote("IsUserNameAvailable", "User")] 
public string UserName { get; set; } 

Cuando regrese esto:

return Json(true, JsonRequestBehavior.AllowGet); 

Entonces quiero para llevar a cabo algo así como establecer el valor del campo oculto, que es el retorno de la acción o muestre la imagen del icono verde. Y también quiero devolver la identificación con verdadero.

¿Cómo lograr esto?

En resumen, quiero hacer algo con éxito.

Respuesta

19

Una forma de lograr esto es agregar un encabezado de respuesta HTTP personalizado de la acción de validación:

public ActionResult IsUserNameAvailable(string username) 
{ 
    if (IsValid(username)) 
    { 
     // add the id that you want to communicate to the client 
     // in case of validation success as a custom HTTP header 
     Response.AddHeader("X-ID", "123"); 
     return Json(true, JsonRequestBehavior.AllowGet); 
    } 

    return Json("The username is invalid", JsonRequestBehavior.AllowGet); 
} 

Ahora en el cliente que, evidentemente, tienen una forma estándar y un campo de entrada para el nombre de usuario:

@model MyViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(x => x.UserName) 
    @Html.ValidationMessageFor(x => x.UserName) 
    <button type="submit">OK</button> 
} 

y ahora la última pieza del rompecabezas es conectar un controlador complete a la regla remote en el campo nombre de usuario:

$(function() { 
    $('#UserName').rules().remote.complete = function (xhr) { 
     if (xhr.status == 200 && xhr.responseText === 'true') { 
      // validation succeeded => we fetch the id that 
      // was sent from the server 
      var id = xhr.getResponseHeader('X-ID'); 

      // and of course we do something useful with this id 
      alert(id); 
     } 
    }; 
}); 
+0

guau ... increíble ....... muchas gracias ...... –

Cuestiones relacionadas