使用 Remote 屬性可以在輸入過程中檢查資料是否重複
在Model要驗證的資料上面加上屬性,Controller輸入名字的部分即可(不要把Controller也打出來)[Remote(action: "VerifyEmail", controller: "User",HttpMethod ="POST")] public string user_email { get; set; } |
在Controller加上要驗證的Action
Action名稱要跟屬性打得一樣,Action要放在屬性輸入的Controller底下因為Model中的欄位很多,所以要加上「Bind」讓Action知道要接收哪個欄位的值
(如果單一屬性的模型就不需要的樣子,但建議還是加一下不然Debug很累)
如果會使用到其他欄位一起進行驗證的話在Remote屬性中加上「AdditionalFields="OtherProperty"」就可以了,多個欄位用,分隔,Controller端一樣要Bind
[HttpPost] public JsonResult VerifyEmail([Bind(Prefix = "user_email")] string email){ if (isInDatabase)){ return Json($"Email {email} is already in use."); } return Json(true); } |
如果會使用到其他欄位一起進行驗證的話在Remote屬性中加上「AdditionalFields="OtherProperty"」就可以了,多個欄位用,分隔,Controller端一樣要Bind
上面的函式庫是ASP.NET CORE用的,下面的是ASP.NET FrameWork用的
理論上不會有兩個函式庫,因為ASP.NET就算安裝上面的也跑不了<<
不過因為程式碼一樣,也不會報錯,如果一直驗證不成功可以注意一下是不是 import 錯了
要檢查是否有成功Post可以透過 F12 > Network 來檢查,有出現框起來的「VerifyEmail」就是成功POST了
如果有Post但結果不對就是驗證邏輯錯了,可以只放一行
return Json($"{email}"); |
如果沒有Post的話可以檢查看看是否有安裝 jquery-validation 並且導入
基本上會遇到的問題應該就這些吧