使用的框架是 WEB form 跟 ASP.net MVC
我在資料庫建立的資料表有些欄位的允許 null
沒打勾,有些有打勾
然後用ADO.net
的實體資料模型的「來自資料庫的 EF Designer」建立 edmx
檔案跟其他.cs
檔案,之後再用「新增 Scaffold 項目」建立「具有檢視,使用 Entity Framework 的 MVC 5 控制器」
以上都是使用自動產生的程式碼,沒去做任何修改
Web.config
裡面有啟用ClientValidationEnabled
跟UnobtrusiveJavaScriptEnabled
,之後開啟Create.cshtml
頁面,故意不輸入任何資料就送出,結果只有三個欄位有跳出xx欄位是必要項。
的訊息
雖然這三個欄位的允許 Null
都沒打勾,但其他允許 null
也沒打勾的欄位卻沒被檢查,我去看edmx
裡面那些沒被檢查的其他欄位屬性,有些欄位的可為 Null
也都是設定成false
沒錯,卻沒有在前端被檢查;看Create.cshtml
的內容,也看不出除了欄位名稱不同以外,被檢查的欄位跟沒被檢查的欄位有什麼不同,而用來顯示驗證失敗訊息的jquery.validate.js
跟jquery.validate.unobtrusive.js
的引用也沒跳出任何錯誤訊息
我看自動產生的資料表名稱.cs
檔案裡面也都沒有[Required]
的字樣,搜尋整個專案也找不到擁有這個關鍵字的檔案;自動產生的Create.cshtml
裡面也沒有任何data-val
的字樣,開頭的@model
也是對應到正確的model
,但最終在瀏覽器用F12
檢查時那三個有被檢查的欄位卻有data-val="true"
的屬性,其他可為 null
設為false
的該被檢查的欄位卻沒有這個data-val="true"
屬性
想請教有什麼可能的原因會導致這種完全自動產生的程式碼,卻會有些欄位能在前端被檢查,有些卻不會呢?或是有什麼檢查方法能讓我找出這問題的根源出在哪邊嗎?
或是我直接改用透過資料庫使用 CodeFirst 產生的資料表.cs
檔會比較好?想要使用強型別的話,應該沒必要堅持產生edmx
檔?