2011-01-28 73 views
0

我在MVC3應用程序中使用不顯眼的驗證。對於一種形式,我需要做一些非常複雜的驗證。因此,我想我可以使用常規的jQuery驗證插件。當使用自定義驗證腳本並且頁面中包含對jQuery.validate.unobtrusive.js的引用時,自定義驗證腳本將始終有效!微軟的jQuery Validate Unobtrusive使其他驗證器跳過驗證

創建測試HTML文件(和包括jquery.validate.jsjquery.unobtrusive-ajax.js,並jquery.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腳本,並且jquery.unobtrusive-ajax.js腳本對於客戶端驗證不是必需的。您應該在您的模型上使用DataAnnotations來指示驗證規則,並且當您需要自定義規則時可以實現IClientValidatable接口並將自定義適配器附加到jquery validate插件,以用於更復雜的場景。你可以看看下列解釋這個概念的答案:answer 1和後續answer 2

+0

是的第二包括是在樣本中的錯誤。我將去IClientValidatable路線。謝謝。 – TheCloudlessSky 2011-01-28 11:21:40