2011-07-14 51 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软件包中 –