Estoy usando la biblioteca JustValidate ( https://github.com/horprogs/Just-validate ) para la validación de formularios. Funciona perfectamente en el lado del cliente, pero parece no funcionar correctamente cuando se ejecuta la validación remota. Por ejemplo: si tenemos un campo de entrada "correo electrónico", la validación remota en nuestro Javascript se vería como el código a continuación.
rules: { email: { email: true, remote: { url: '@Url.Action("Validate", "ActivityTypes")', sendParam: 'email', successAnswer: 'OK', method: 'GET' } } }Cada vez que el usuario ingresa algo en la entrada de correo electrónico, el valor se envía al servidor y se verifica si está bien o no. El problema es que siempre obtienes una respuesta OK. Y cada vez que obtiene esa respuesta, aparece el mensaje de error para la entrada (incluso si la entrada se ha completado correctamente). La acción de mi controlador se ve así:
public async Task<IActionResult> Validate(ActivityType values) { var activityType = await _context.ActivityType .FirstOrDefaultAsync(m => m.Name == values.Name); if (activityType == null) { return NotFound(); } return Ok(); }Ya intenté redirigir de una acción a otra en el controlador, devolviendo NotFound() pero sigo recibiendo la respuesta Ok, y el mensaje de error aparece nuevamente. Al probar las demostraciones en la página GitHub de la biblioteca JustValidate, noté que las entradas siempre muestran mensajes de error para el "correo electrónico" de entrada, incluso cuando no deberían. ¿Alguien encontró una solución alternativa? Ya he usado esta biblioteca en el 80% de todo mi formulario y no quiero cambiarla por otra biblioteca.
Como mencionaste successAnswer: 'OK' debes devolver la respuesta como Content . Como esto.
[HttpGet] [Route("check-exists")] public IActionResult CheckExists(string email) { return email == "anuraj@example.com" ? Content("Not Okay") : Content("OK"); }