Я создал модель ADO.NET моей базы данных. Создал новый контроллер с CRUD (структура сущности и с использованием модели сущности ADO.NET, которую я создал).обход проверки модели в контроллере?
В моей базе данных У меня есть простая таблица пользователей. В строке «Пароль» в таблице будут храниться пароли пользователей, зашифрованные с помощью SimpleCrypto (PBKDF2).
В моей ADO.NET Users.cs модели я добавил следующие проверки:
[Required]
[DataType(DataType.Password)]
[StringLength(20, MinimumLength = 6)]
[Display(Name = "Password")]
public string Password { get; set; }
Это работает с JQuery в браузере с проверкой. Но в моем контроллере я шифрую пароль, а затем строка «Пароль» будет содержать более 20 символов в длину.
var crypto = new SimpleCrypto.PBKDF2();
var encryptedPass = crypto.Compute(user.Password);
user.Password = encryptedPass;
user.PasswordSalt = crypto.Salt;
_db.Users.Add(user);
_db.SaveChanges();
И это дает мне и «Проверка не удалась для одного или нескольких объектов». - Ошибка.
Я могу скопировать пользователя в «var newUser», а затем установить все свойства там, но нет ли в этом случае более простого способа обойти проверку модели?
EDIT: Если я удалю проверку пароля в модели, тогда все будет работать. Так что это проверка, которая дает мне ошибку, потому что я изменяю пароль с 6-20 символов длины до символов +100 lengt из-за шифрования в контроллере.
РЕДАКТИРОВАТЬ: Полностью раздел контроллера включен в этот вопрос.
[HttpPost]
public ActionResult Create(Users user)
{
if (!ModelState.IsValid)
{
return View();
}
if (_db.Users.FirstOrDefault(u => u.Email == user.Email) != null)
{
ModelState.AddModelError("", "User already exists in database!");
return View();
}
var crypto = new SimpleCrypto.PBKDF2();
var encryptedPass = crypto.Compute(user.Password);
user.Password = encryptedPass;
user.PasswordSalt = crypto.Salt;
_db.Users.Add(user);
_db.SaveChanges();
return RedirectToAction("Index", "User");
}
Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –