0

我有一条自定义消息,它是远程验证方法的返回类型,当返回类型为 Boolean 时它工作正常,但是现在当我更改返回类型时,我在输入字段中得到 input-validation-error 类但没有显示错误消息。(我写了错误消息)。我不知道是什么导致在输入字段中添加该类。

远程验证

[Remote("Checkmail", "api", ErrorMessage = "Already taken")]
        public string Email { get; set; }

被调用的方法

public Message Checkmail(string email)
        {
            try
            {

                if(email=="test@test.com")
                   {
                       return new Message{MessageCode = "True"}; 
                   }
             return new Message{MessageCode= "false"};
            }
            catch (Exception)
            {
                throw;
            }
        }

AJAX 调用

 $(document).ajaxComplete(function (event, xhr, settings) {

            var status = xhr.responseJSON;
                if (status.MessageCode == "True") {
                   //CSS to change 
                }
4

1 回答 1

2

阅读这篇文章,它全面解释了远程验证的工作原理。特别注意这一行:

除 true 以外的任何响应都被视为 false

因此,如果您的 JSON 与 true 不同,则将其视为错误。并且,如果是一个字符串,它将在客户端显示为错误消息。

因此,您的远程验证操作应返回:

  • 或者true,如果它是正确的
  • 或带有错误消息的字符串,将显示在浏览器中

如果您返回任何其他内容,将被视为错误,但消息会丢失。如果您有固定的错误消息,请从控制器中的验证操作中返回该字符串。

所以你的动作必须返回 a JsonResult,你可以返回你需要的:

if (valid)
{
  return Json(true); 
}
else
{
  return Json("this is the error message");
}
于 2014-01-14T17:07:29.587 回答