I am using .Netcore MVC. I have a registration page and I want mail, password and password confirmation from user. I can check if password and confirmation password are equal, but still my controller action triggers which is saving the user data to db. I don't want my controller to save the user to db if passwords are different.
View:
<form class="user" action="/account/adduser" method="post">
@Html.AntiForgeryToken()
<div class="form-group">
<input type="text" class="form-control form-control-user" aria-describedby="emailHelp" name="Mail" placeholder="Kullanıcı Adı">
</div>
<div class="form-group">
<input type="password" class="form-control form-control-user" id="Password" name="Password" placeholder="Şifre">
</div>
<div class="form-group">
<input type="password" class="form-control form-control-user" id="Password2" name="Password2" placeholder="Şifreyi Onayla">
</div>
<hr>
<button type="submit" class="btn btn-primary btn-user btn-block" id="buton" name="buton" onclick="confirmation()">
Ekle
</button>
@if (ViewBag.UserAdded != null)
{
<div class="toast-header">
Kullanıcı Eklendi.
</div>
}
@if (ViewBag.duplicate == "true")
{
<div class="toast-header">
Mail zaten kullanımda.
</div>
}
</form>
<script>
function confirmation() {
var pw1 = $("#Password").val();
var pw2 = $("#Password2").val();
if (pw1 == pw2) {
alert(1);
return true;
}
else {
alert(2);
return false;
}
}
</script>
Controller:
[HttpPost]
public IActionResult AddUser(User user)
{
if (IsDuplicate(user)) {
ViewBag.duplicate = "true";
return View();
}
_context.Users.Add(user);
_context.SaveChanges();
ViewBag.UserAdded = "success";
return View();
}
I don't want to add an extra string to my class user as confirmationPassword even that would work. I want to check it in view and cancel the action if they are not equal. How can I achieve this? Thanks in advance!