0

リモート検証メソッドの戻り値の型であるカスタム メッセージがあります。戻り値の型がブール値の場合は正常に動作していましたが、戻り値の型を変更すると、入力フィールドで入力検証エラー クラスが取得されます。エラーメッセージは表示されません(エラーメッセージが書かれています)。入力フィールドにそのクラスを追加する原因がわかりません。

リモート検証

[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、それが正しい場合
  • またはブラウザに表示されるエラーメッセージの文字列

それ以外を返すと、エラーと見なされますが、メッセージは失われます。修正されたエラー メッセージが必要な場合は、コントローラーの検証アクションからその文字列を返します。

したがって、アクションは を返すJsonResult必要があります。必要なものを返すことができます。

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