镀铬提示:
确保页面中已经包含了相关的js(使用了MasterPage,两个页面中包含的js文件完全相同),从而消除了JS引用路径不正确的问题。页面上生成的mvcClientValidationMetadata是可以的,但是客户端身份验证就是不起作用。将MicrosoftAjax.js替换为MicrosoftAjax.debug.js参见Chrome调试工具中sys . ui . DOM element . getelementbyid函数抛出的这个异常。
在第394行添加断点,刷新页面,逐步跟踪。。
162行,根据ID得到一个DOM对象,这里看到的optionsFormID为null。(Chrome的js调试功能很强。)再次查看CallStack的上一步。
以下是页面加载后客户端验证的mvcClientValidationMetadata数据。通过下面的内容,你可能会猜到问题出在哪里。查看页面源代码,在/form节点后面的脚本中看到生成的验证码如下:。
表单标识为空!然后我会打开客户端难以验证的页面:。
看到区别了吗,因为FormID是空的。而且他们生成的表单也不一样:。
客户无法验证的表格。
一个可以被客户端验证的id的表单可以被客户端验证!但是,在这两个视图中,使用(Html。begin inform()){ }用于生成表单,表单ID的属性没有特别设置。为什么一个有身份证,一个没有身份证?杯子!打开两个视图页面,逐一查看,最后发现两个视图的区别就在于这一点:。
前者调用Html。BeginForm()之前的EnableClientValidation();调用Html。BeginForm后的EnableClientValidation();记住,如果你想使用mvc客户端验证,请调用Html。BeginForm()之前的EnableClientValidation();