台灣最大程式設計社群網站
線上人數
1212
 
會員總數:243466
討論主題:188182
歡迎您免費加入會員
討論區列表 >> ASP.NET >> MVC Model驗證跨頁面失效
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
MVC Model驗證跨頁面失效
價值 : 150 QP  點閱數:203 回應數:4

樓主

哈特利
門外漢
0 3
78 10
發送站內信

各位好,在撰寫MVC程式時發生驗證失效的問題
當我在ViewModel上建立好驗證規則後,Index頁面可以正常的驗證資料後提交表單
並依據回傳的內容至資料庫取得其他資料,再傳回另一個View上呈現,
而另一個View修改後欲提交時,卻發現當欄位null時,model驗證有觸發,
但是前端JQuery以及Validate.js卻沒有show出錯誤訊息以及阻擋表單的提交,導致後續傳值到Controller時有null會出錯,
後來將JQuery換回專案一開始創建時預設提供的版本:1.10.2版時,驗證又能成功觸發將其阻擋提交表單
網路上查了很多資料,大部分都是Client端驗證出錯,這個類似的問題好像比較少...
想請教各位有沒有遇過類似情況,以及是如何解決的呢? 十分感謝!

開發環境:Visual Studio2013
JQuery版本:3.3.1
Validate版本:1.17.1

搜尋相關Tags的文章: [ MVC ] ,
本篇文章發表於2018-08-30 17:08
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
前端JQuery以及Validate.js卻沒有show出錯誤訊息以及阻擋表單的提交


您提到您有用到jQuery的Validate Plugin
也有用到ViewModel的驗證設定
卻沒有阻擋送出

由於您沒有貼出您這兩部分的Code(ViewModel, Validate plugin)
因此比較難告訴您可能的問題在哪


建議您:
1.如果沒有,為了釐清問題,或許您可以另外寫一個View綁上該ViewModel,先不套用Client端的jQuery等其他東西
單純觀察為何ViewModel的驗證設定沒有套用到View產出的html
2.觀察瀏覽器中『檢視原始碼』的html,查看看是否input的required這個屬性是否有出現
如果有,那麼Server端的問題應該可以排除
這時候建議您把您Validate.js相關的驗證設定,改以單純的html來測試,看看是哪個部分的設定出問題


在沒有您貼出相關程式碼的情況下
小喵只能給您一些自己找問題的方向與手法
您試試看,還是不行,您把相關語法貼出來

^_^

本篇文章回覆於2018-09-03 09:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

哈特利
檢舉此回應
好 我先試試看 感謝您~!
本篇文章回覆於2018-09-03 15:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

MIS2000 Lab
檢舉此回應
可以請問您驗證的資料格式是什麼嗎?

string? DateTime?

會因為 jQuery版本有變化,導致內建的驗證出錯
好像是 "日期區間" 的驗證,例如:輸入日期必須是 2010/1/1~2010/12/31才可以

Sorry
您給的資訊不夠多,只能用猜的
本篇文章回覆於2018-09-03 21:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

哈特利
檢舉此回應
失效的那個View 有string型態 也有Datetime型態的變數欄位
後來重開一個專案,並重新將JQuery、JQuery-Validate.js重新替換後,就可正常運作
但原先的專案無論如何更換JS檔都無效... 有點詭異
本篇文章回覆於2018-09-04 09:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.