ASP.NET MVC 2 RTM client side validation一个隐秘的坑_.net教程网
时间:2010-08-30 来源:蔚蓝的大海
同一相站点,有些页面的客户端验证能工作,而有些死活不行。打开页面就出现“Uncaught TypeError: Cannot set property '__MVC_FormValidation' of null”错误,Chrome提示: 确定相关JS已经包含在页面中,(用的是MasterPage,二个页面包含的js文件完全相同),排除了js引用路径不正确的问题。 页面上生成的mvcClientValidationMetadata也没问题,但客户端验证就是不起作用。 将MicrosoftAjax.js替换成MicrosoftAjax.debug.js。在Chrome调试工具中看到此异常在Sys.UI.DomElement.getElementById函数中抛出
在394行加个断点,刷新页面,一步步跟踪, 162行,根据ID获取某个DOM对象,在这里看到optionsFormID为null。(Chrome的js调试功能很强),再看到CallStack的上一步。 这里是在页面加载完成后处理客户端验证的mvcClientValidationMetadata 数据。 跟到这里大概能就猜出问题在哪里了。
查看页面源码,在</form>节点后的脚本中看到生成的验证代码如下: 表单的ID为null! 然后我再打开难进行客户端验证的页面:
看到差别了,就是因为FormID为null。
并且他们生成的表单也有所不同: 不能进行客户端验证的Form 能进行客户端验证的Form
有id的Form能进行客户端验证! 可是二个视图中都是用using (Html.BeginForm()){}生成表单的,没有特意去设置Form ID属性,为何一个有id另一个没id? 杯具! 打开二个视图页面,一个一个排查,最后发现二个视图的差别在这一点: 前都是在BeginForm()之前调用Html.EnableClientValidation();,后BeginForm之后才调用 Html.EnableClientValidation();
记住了,想要用mvc client side validation,请在BeginForm()之前调用Html.EnableClientValidation(); at&t wireless planscpu power supply problemsati radeon display driversps3 high definition setupbest buy new release dvds10 usb cabledlink wireless g usbset up security linksys routerflat plug extension cord shoesati radeon all in wonder driversplaystation 2 hd tvunlock sprint lg rumormicrosoft picture manager sepiapci sound card macusb 2.0 video adapter audioall video joiner serialxbox 720p vs 1080isapphire 4850x2 2gb pcie graphics card reviewearthlink high speed internet servicemini pci wireless linuxtoms hardware video card rankingsworld smallest bluetooth headset officenetgear wireless usb adapter ma111 drivernatural sources vitamin b6rogers demand channel 100pcmcia vs expressbelkin wireless g bridgemsi sata drivertranscend pen drive registrationcopyright agency limited caladelphia cable customer servicesims 2 save filesconnecting subwoofer stereo ampcharger sa psp usbnetgear nic card driversbest patch cableworld of warcraft softwareparallel 25 pinsky one tv listingsintel extreme graphics 2 driver downloadsandisk driver softwares pdif out connectorups suppliersipod usb cablebsnl evdo data cardmicrosoft keyboard reviewsbluetooth headset with computerdownload realtek network card driversbelkin hdmi dvi adaptergiochi simili sims 2pretty peach coin pearl beadsxbox 360 nextaganderson plug installationcanon i70 driver downloadtest if sound card workingwireless router reviewroger federer july 2008price new sim cardrigid drill press partsgroup policy slow link detection registryrogers yahoo antivirus downloadfind linksys wireless g pci cardpromise rings meaningncis ratingssky cable broadband reviewgigabyte wireless routerused home decorsvga wiring diagrambluetooth wireless headsettransfer video laptop tvconnect rca plugsennheiser pc 350laser pointer factsps3 no display on tv4 pin ieee 1394 portsecretary desk reviewslaser grip sightschevrolet wiring harnessvga port tvsandisk pcmcia card readerplastic fiber optic cablesadobe photoshop freewarecb radio storesbelkin wireless usb utility downloaddvd video plug inwalmart wireless keyboard prankwireless card hp pavilionplug keyboard laptopsims 2 package extractordell latitude charging problemssources good carbohydratespanasonic best buyusb id pinhigh end stereo receiversdigital broadcast transitionlg voyager coversusb win98 driverscomposite video over coaxcisco optical switchfix usb connector Replica lv Hangbags Replica Hangbags Hangbags replica handbags replica handbags replica handbags replica handbags usb cable usb cable usb cable usb cable |