Asp.Net MVC EnableClientValidation不';行不通

Asp.Net MVC EnableClientValidation不';行不通,validation,asp.net-mvc-2,data-annotations,client-side-validation,Validation,Asp.net Mvc 2,Data Annotations,Client Side Validation,我需要客户端验证和服务器端验证。我意识到这一点如下: 模型:(模型有一个包含测试类的数据模型(dbml) 控制器没什么特别的 观点: <% Html.EnableClientValidation(); %> <% using (Ajax.BeginForm("Index", "Test", FormMethod.Post, new AjaxOptions {}, new { enctype = "multipart/form-data" }))

我需要客户端验证和服务器端验证。我意识到这一点如下:

模型:(模型有一个包含测试类的数据模型(dbml)

控制器没什么特别的

观点:

<% Html.EnableClientValidation(); %>
<% using (Ajax.BeginForm("Index", "Test", FormMethod.Post, 
            new AjaxOptions {}, new { enctype = "multipart/form-data" }))
   {%>
   <%= Html.AntiForgeryToken()%>
    <fieldset>
        <legend>Widget Omschrijving</legend>
        <div>
            <%= Html.LabelFor(Model => Model.Name) %>
            <%= Html.TextBoxFor(Model => Model.Name) %>
            <%= Html.ValidationMessageFor(Model => Model.Name) %>
        </div>
    </fieldset>
    <div>
        <input type="submit" value="Save" />
    </div>
 <% } %>

小部件Omschrijving
型号(名称)%%>
型号(名称)%%>
型号(名称)%%>
为了实现这一切,我还添加了对js文件的引用:

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

最终它必须起作用,但它不能100%起作用: 按下按钮后,它会进行验证,而不会刷新页面。 它还进行“半”客户端验证。仅当您在文本框中键入一些文本,然后将键入的文本退格时。此时将显示客户端验证。但当我尝试在控件之间点击时,没有客户端验证


我是不是错过了一些参考资料?(我使用Asp.Net MVC 2 RTM)

我还以为我遗漏了什么,但我知道jQuery验证插件对mouseEnter/mouseLeave没有反应。根据该插件的文档(在-look部分标记为“使用演示时需要查找的一些东西”):

在一个字段被标记为无效之前,验证是惰性的:在第一次提交表单之前,用户可以在字段中进行制表,而不会收到恼人的消息——在他有机会实际输入正确的值之前,他不会被窃听

我假设MVC2客户端验证的规则是相同的。我不能确定这一点,因为文档中只说了“它在我的机器上工作”:

我使用了jQuery验证路径,它在中得到了支持(注意,这方面的文档不存在)。要使用它,只需将MicrosoftJax.js、MicrosoftMvcAjax.js和MicrosoftMvcValidation.js文件的脚本标记替换为以下两个标记:

<script src="/js/jquery.validate.js" type="text/javascript"></script>
<script src="/js/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>

将路径替换为您的路径

我还发现需要从开发者页面升级到jquery.validate.js的最新版本,因为我们在这里使用的是jquery(1.4)的更高版本


希望这能有所帮助。

嗯…,现在回答还来得及,但试试这个:

<script src="<%= Url.Content("ScriptFile.js") %>" type="text/javascript"></script>

更改加载的javascript的顺序

<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>


有完全相同的问题,这为我解决了…

我用您描述的内容修改了代码,但没有改进。我使用:jQuery 1.4.2 jQuery validate 1.7 MicrosoftMvcJQueryValidation无版本号可用。我还将MicrosoftMvcJQueryValidation.js文件中的引用更改为//,但仍然没有改进。验证是如何包含在我的页面中的。但是,客户端验证根本不起作用,您是否看到任何问题?
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>