Мой текущий веб-проект имеет интерфейс администрирования, в котором детали пользователя могут быть отредактированы (на самом деле не революционизирую, я признаю ...). Вид использует строго типизированных модель пользователя, с атрибутами проверки:Подтвердить только грязные входы
public class UserPrototype
{
[Required]
[StringLength(50, MinimumLength = 4)]
public string Username { get; set; }
[Required]
[StringLength(50, MinimumLength = 1)]
public string FirstName { get; set; }
[Required]
[StringLength(50, MinimumLength = 1]
public string LastName { get; set; }
[Required]
[StringLength(250, MinimumLength = 6]
public string Password { get; set; }
/*
And so on
*/
}
Когда пользователь обновляется, я хотел бы обновить только в базе данных тех полей, которые на самом деле изменились. Основной причиной является поле пароля - пароль, конечно, хранится как хэш, поэтому, когда пользователь возвращается для редактирования, в этом поле нет ничего значимого. Но для проверки правильности привязки модели требуется действующий пароль.
Итак, могу ли я использовать один и тот же класс, но как-то только проверять те поля, которые представлены как измененные (это я могу выполнить, хотя javascript)? Я бы хотел избежать дублирования класса UserPrototype
, чтобы удалить атрибуты Required
.
Ах, но я все еще хочу, чтобы это было возможно * изменить пароль. Но не нужно знать пароль и повторно вводить его, чтобы изменить какой-то другой параметр ... – carlpett
Обновлен мой ответ. В сценарии редактирования удалите требуемый атрибут. –