For instance, I have an Employee view model. When creating an employee, I want to validate the username to make sure it doesn't exist.
public class EmployeeViewModel
{
[ScaffoldColumn(false)]
public int EmployeeId { get; set; }
[ValidateDuplicate(ErrorMessage = "That username already exists")]
[Required(ErrorMessage = "Username is required")]
[DisplayName("Username")]
public string Username { get; set; }
}
And then have my ValidateDuplicate function somewhere with the code to check for a duplicate.
Is this possible?
I would suggest looking at remote validation. The example even matches your case.
Basically, add the remote attribute to your viewmodel property that points to a controller action
[Remote("IsUserExists", "Account", ErrorMessage = "Can't add what already exists!")]
[Required(ErrorMessage = "Username is required")]
[DisplayName("Username")]
public string Username { get; set; }
which does your work
public ActionResult IsUserExists(string userName)
{
if (!UserService.UserNameExists(userName) || (CurrentUser.UserName == userName))
{
return "Ok.";
}
}
Yes, it's possible. You'll need to write your own validation attribute.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With