2011-07-14 79 views
0

我想解決客戶端驗證,並遵循了幾個教程,它看起來很簡單,但我不知道爲什麼它不在我的項目上工作,下面是代碼:Html.ClientValidation does not work on mvc

<script type="text/javascript" src="/Scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="/Scripts/jquery.validate.js"></script> 
<script type="text/javascript" src="/Scripts/MicrosoftMvcJQueryValidation.js"></script> 

    <% Html.EnableClientValidation(); %> 
    <% using (Html.BeginForm()) {%> 
    <%: Html.ValidationSummary("Please Correct the errors and try again")%> 

    <div class="editor-label"> 
      <%: Html.LabelFor(model => model.test,"Test") %> 
     </div> 
     </td> 
     <td> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.test)%> 
      <%: Html.ValidationMessageFor(model => model.test)%> 
     </div> 
     </td> 
     </tr> 

編輯: 母版頁

<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery-1.5.1.js") %>"></script> 
    <script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.js") %>"></script> 
    <script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.unobtrusive.js") %>"> </script> 
    <script src="/Scripts/jquery-ui.min.js" type="text/javascript"></script> 
    <script type="text/javascript" src="/Scripts/tiny_mce/jquery.tinymce.js"></script> 
    <script src="/Scripts/ie6.js" type="text/javascript"></script> 

爲什麼當我按標籤該字段的客戶端驗證犯規工作任何想法。

+0

這是ASP.NET MVC 3嗎? –

+0

你好,但我沒有使用剃鬚刀引擎 –

+0

我也嘗試了腳本的url.content,但是這樣做的工作.. –

回答

2

在ASP.NET MVC 3中,jqueryjquery.validate是進行客戶端驗證的默認框架。因此,修改您的代碼看起來像這樣:

<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery-1.5.1.js") %>"></script> 
<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.js") %>"></script> 
<script type="text/javascript" src="<%= Url.Content("~/scripts/jquery.validate.unobtrusive.js") %>"></script> 

<% using (Html.BeginForm()) { %> 
    <%= Html.ValidationSummary("Please Correct the errors and try again") %> 

    <div class="editor-label"> 
     <%= Html.LabelFor(model => model.test, "Test") %> 
    </div> 
    <div class="editor-field"> 
     <%= Html.TextBoxFor(model => model.test) %> 
     <%= Html.ValidationMessageFor(model => model.test) %> 
    </div> 
<% } %> 

事情需要注意:

  • 使用jQuery 1.5.1這是與ASP.NET MVC 3 RTM和工具更新綁定默認的。確保使用jQuery的更高版本作爲IIRC,jquery.validate插件和jquery版本之間存在一些不兼容問題。
  • 使用jquery.validate.js
  • 使用jquery.validate.unobtrusive.js其不顯眼地附着的jQuery.validate插件HTML5由HTML輔助發射數據 - *屬性。
  • 使用Url.Content幫助程序引用靜態資源,而不是硬編碼它們的位置。
  • 不再需要調用Html.EnableClientValidation()
  • 沒有更多需要包括以前綴開始Microsoft*

最後要注意的任何JavaScript:請確保你的web.config不顯眼的客戶端腳本啓用了驗證:

<appSettings> 
    ... 
    <add key="ClientValidationEnabled" value="true" /> 
</appSettings> 

得到這些腳本的最新版本,最好的辦法是安裝ASP.NET MVC 3 Tools Update,創建使用Visual Studio和FET默認的嚮導創建新的ASP.NET MVC 3項目那3個腳本。

+0

我在哪裏可以得到jquery.validate.unobtrusive.js –

+2

它應該包含在默認的Internet項目模板中。也就是說,當你創建一個新的MVC 3項目時,你將會有幾個選擇:互聯網應用程序,Intranet應用程序(如果你安裝了MVC 3工具更新)和Empty我相信。如果您選擇Internet,它應該包含在腳本文件夾中。 – Dismissile

+0

未包含在mvc3軟件包中 –