I would suggest looking at the remote check. An example even matches your case.
Basically, add the remote attribute to the viewmodel property, which indicates the action of the controller
[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."; } }
source share