使用JustValidate的remote选项时如何阻止错误消息异常展示?
问题根因
- 第一,你当前控制器返回的
Ok()是空响应体,而JustValidate的remote规则配置的successAnswer: 'OK'要求响应体**必须完全等于字符串"OK"**才会判定校验通过,空响应自然匹配失败。 - 第二,参数映射不匹配:前端配置的
sendParam: 'email',会将用户输入的邮箱以email为参数名发送请求,但是你后端接口用ActivityType实体接收,取Name字段做查询,参数名对应不上,导致查询逻辑永远拿到空值,校验逻辑本身就出错。
解决方案
- 修正后端返回值,将空的Ok响应改为返回字符串"OK"
修改你的控制器代码:
public async Task<IActionResult> Validate(string email) // 直接接收前端传的email参数 { var activityType = await _context.ActivityType .FirstOrDefaultAsync(m => m.Name == email); // 用传入的email匹配对应字段 if (activityType == null) { return NotFound(); // 校验不通过返回非200状态,或者返回非"OK"的内容都可以 } return Ok("OK"); // 必须返回内容为"OK"的响应,才能匹配successAnswer配置 }
- 如果你的业务要求参数名保持为
Name,同步修改前端remote配置的sendParam即可:
rules: { email: { email: true, remote: { url: '@Url.Action("Validate", "ActivityTypes")', sendParam: 'Name', // 和后端接收的字段名保持一致 successAnswer: 'OK', method: 'GET' } } }
- 校验逻辑确认:如果你的业务逻辑是「邮箱不存在才允许提交」,需要把判断逻辑反过来,查到对应数据返回NotFound,没查到才返回OK,不要搞反校验规则。
修改完以上配置后远程校验就可以正常判定通过状态,不需要更换校验库。
内容的提问来源于stack exchange,提问作者SeeSharper
相关产品推荐
相关产品推荐

