Создание уникального поля моделей MVC — редактирование усложнения

#asp.net #asp.net-mvc #asp.net-mvc-4 #data-annotations

#asp.net #asp.net-mvc #asp.net-mvc-4 #данные-аннотации

Вопрос:

У меня есть такая модель в MVC;

 public class Employee
    {
        public int EmployeeId { get; set; }
        [Required]
        [EmailAddress]
        [DisplayName("Email")]
        [Remote("doesEmailExist", "Employee", HttpMethod = "POST", ErrorMessage = "Email already exists. Please enter a different Email.")]
        public string Email { get; set; }
    }
  

При создании действия все в порядке, оно отлично работает. Но при редактировании действия программа видит, что адрес электронной почты уже существует. И я не могу обновить своего сотрудника с тем же адресом электронной почты. Что я могу сделать?

Ответ №1:

Вы могли бы использовать AdditionalFields свойство RemoteAttribute для включения EmployeeId в проверку. Затем в вашем методе действий, если EmployeeId=null проверка завершается неудачей, если найдено совпадающее электронное письмо, в противном случае проверяйте только совпадающие электронные письма, в которых указан другой идентификатор сотрудника

Комментарии:

1. Я сделал такой метод; [HttpPost] public JsonResult doesEmailExist(int EmployeeID, строка Email){} когда я редактирую его, он возвращает идентификатор и почту, и он работает хорошо, но когда я создаю новый, он не видит этот метод

2. Имеет ли EmployeeID значение для нового сотрудника (например, = 0) или оно равно нулю? Если null, то оно должно быть doesEmailExist(int? EmloyeeID, ..