MVC4远程验证无法正常工作

时间:2014-01-14 13:32:19

标签: asp.net-mvc-4 remote-validation

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

远程验证

[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 
                }

1 个答案:

答案 0 :(得分:2)

read this article,它提供有关远程验证如何工作的完整说明。特别注意这一点:

  

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

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

因此,您的远程valdiation操作应该返回:

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

如果您返回任何其他内容,则会将其视为错误,但邮件将丢失。如果您发出修复的错误消息,请从控制器中的验证操作返回该字符串。

因此,您的操作必须返回JsonResult,您可以返回所需内容:

if (valid)
{
  return Json(true); 
}
else
{
  return Json("this is the error message");
}