2011-01-28 8 views
0

私はMVC3アプリケーションで控えめな検証を使用しています。あるフォームでは、かなり複雑な検証を行う必要があります。したがって、私は正規のjQueryのvalidateプラグインを使用できると考えました。カスタム検証スクリプトを使用しており、jQuery.validate.unobtrusive.jsへの参照がページに含まれている場合、カスタム検証スクリプトは常に有効です!MicrosoftのjQuery Validate Unobtrusiveによって他のバリデータが検証をスキップします

テスト用のhtmlファイルを作成します(jquery.validate.js,jquery.unobtrusive-ajax.jsjquery.validate.unobtrusive.js)。以下のフォームが提出されると、の検証チェックは行われません。スクリプト参照をjquery.validate.unobtrustive.jsに移動すると、スクリプト参照が再び機能します。これの周りに簡単な方法がありますか?

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test Jquery</title> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.js"></script> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.js"></script> 
    <script type="text/javascript" src="jquery.validate.js"></script> 
    <script type="text/javascript" src="jquery.unobtrusive-ajax.js"></script> 
    <script type="text/javascript" src="jquery.validate.unobtrusive.js"></script> 
    <script type="text/javascript"> 
     $(function() 
     { 
      var result = $("#commentForm").validate({ 
       rules: 
       { 
        name: "required", 
        email: { 
         required: true, 
         email: true 
        }, 
        comment: "required" 
       } 

      }); 

     }); 
    </script> 
</head> 
<body> 
    <form id="commentForm" method="get" action=""> 
    <fieldset> 
     <legend>A simple comment form with submit validation and default messages</legend> 
     <p> 
      <label for="cname">Name</label> 
      <em>*</em><input id="cname" name="name" size="25" /> 
     </p> 
     <p> 
      <label for="cemail">E-Mail</label> 
      <em>*</em><input id="cemail" name="email" size="25" /> 
     </p> 
     <p> 
      <label for="ccomment">Your comment</label> 
      <em>*</em><textarea id="ccomment" name="comment" cols="22"></textarea> 
     </p> 
     <p> 
      <input class="submit" type="submit" value="Submit" /> 
     </p> 
    </fieldset> 
    </form> 
</body> 
</html> 

答えて

1

ASP.NET MVC 3の控えめなクライアント側の検証を使用する場合は、カスタムルールを記述しないでください。また、jquery.validate.jsスクリプトを2回追加したと思われ、jquery.unobtrusive-ajax.jsスクリプトはクライアント側の検証には必要ありません。モデルでDataAnnotationsを使用して検証ルールを指定し、IClientValidatableインターフェイスを実装し、カスタムアダプタをjquery validateプラグインに追加するカスタムルールが必要な場合は、より複雑なシナリオで使用する必要があります。このコンセプトを示す次の回答をご覧ください。answer 1とフォローアップanswer 2

+0

ええ、2番目のインクルードはサンプルの間違いでした。私は 'IClientValidatable'ルートに行きます。ありがとう。 – TheCloudlessSky

+0

親愛なるダーリン、私はIClientValidatableを使ってデータベースとの値をチェックできますか?名前のチェックなど、カスタム検証属性を持つデータベースに存在しますか? – lawphotog

関連する問題