使用的框架是 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檔?