前往
大廳
主題

ASP.NET CORE 驗證重複資料

伶乃 | 2022-01-08 20:31:40 | 巴幣 4 | 人氣 359

使用 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很累)
[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

補充一下自己犯的蠢,初次接觸ASPNET亂亂安裝Package才會發生的問題
上面的函式庫是ASP.NET CORE用的,下面的是ASP.NET FrameWork用的
理論上不會有兩個函式庫,因為ASP.NET就算安裝上面的也跑不了<<
不過因為程式碼一樣,也不會報錯,如果一直驗證不成功可以注意一下是不是 import 錯了

要檢查是否有成功Post可以透過 F12 > Network 來檢查,有出現框起來的「VerifyEmail」就是成功POST了

如果有Post但結果不對就是驗證邏輯錯了,可以只放一行
return Json($"{email}");
來看Controller收到的訊息是甚麼

如果沒有Post的話可以檢查看看是否有安裝 jquery-validation 並且導入
基本上會遇到的問題應該就這些吧

創作回應

阿泰
isInDatabase 要改成甚麼
2023-05-11 01:45:47
伶乃
放你自己的檢查判斷
2023-05-11 13:53:31

相關創作

更多創作