Chrome提示:
確定相關(guān)JS已經(jīng)包含在頁(yè)面中,(用的是MasterPage,二個(gè)頁(yè)面包含的js文件完全相同),排除了js引用路徑不正確的問(wèn)題。
頁(yè)面上生成的mvcClientValidationMetadata也沒(méi)問(wèn)題,但客戶(hù)端驗(yàn)證就是不起作用。
將MicrosoftAjax.js替換成MicrosoftAjax.debug.js。在Chrome調(diào)試工具中看到此異常在Sys.UI.DomElement.getElementById函數(shù)中拋出
在394行加個(gè)斷點(diǎn),刷新頁(yè)面,一步步跟蹤,
162行,根據(jù)ID獲取某個(gè)DOM對(duì)象,在這里看到optionsFormID為null。(Chrome的js調(diào)試功能很強(qiáng)),再看到CallStack的上一步。
這里是在頁(yè)面加載完成后處理客戶(hù)端驗(yàn)證的mvcClientValidationMetadata 數(shù)據(jù)。
跟到這里大概能就猜出問(wèn)題在哪里了。
查看頁(yè)面源碼,在</form>節(jié)點(diǎn)后的腳本中看到生成的驗(yàn)證代碼如下:
表單的ID為null!
然后我再打開(kāi)難進(jìn)行客戶(hù)端驗(yàn)證的頁(yè)面:
看到差別了,就是因?yàn)镕ormID為null。
并且他們生成的表單也有所不同:
不能進(jìn)行客戶(hù)端驗(yàn)證的Form
能進(jìn)行客戶(hù)端驗(yàn)證的Form
有id的Form能進(jìn)行客戶(hù)端驗(yàn)證!
可是二個(gè)視圖中都是用using (Html.BeginForm()){}生成表單的,沒(méi)有特意去設(shè)置Form ID屬性,為何一個(gè)有id另一個(gè)沒(méi)id?
杯具!
打開(kāi)二個(gè)視圖頁(yè)面,一個(gè)一個(gè)排查,最后發(fā)現(xiàn)二個(gè)視圖的差別在這一點(diǎn):
前都是在BeginForm()之前調(diào)用Html.EnableClientValidation();,后BeginForm之后才調(diào)用 Html.EnableClientValidation();
記住了,想要用mvc client side validation,請(qǐng)?jiān)贐eginForm()之前調(diào)用Html.EnableClientValidation();
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com