Комментарии 8
Было бы элегантнее если в методе ActionResult Captcha() использовалась не прямая работа с Response, а вызов метода return File() т.е. FileContentResult
Хороший цикл статей. Единственное замечание — не надо валидировать email регексом. Никогда. Приведенный, в частности, не пропустит доменное имя без точек.
Спасибо за учебник, все очень доступно. Большой объем полезной информации с практикой применения, то что нужно.
Есть вопрос. Не совсем понятно, зачем нужен AutoMapper, чем плох например вариант наследования UserView от базового класса User и реализации в нем всего недостающего — ConfirmPasswor, Captcha, IValidatableObject.
Есть вопрос. Не совсем понятно, зачем нужен AutoMapper, чем плох например вариант наследования UserView от базового класса User и реализации в нем всего недостающего — ConfirmPasswor, Captcha, IValidatableObject.
Причина в валидации через атрибуты (дальше по тексту). Они удобнее. Они должны быть для полей, поля находятся в файле, который генерируется, туда доступа мы не имеем (т.е. редактировать там чревато, при повторной генерации наш код пропадет). Поэтому и AutoMapper.
Попробывал вариант с наследованием, не работает. LinqToSQL видимо не принимает объект наследник как свой родной табличный объект. А приведение к базовому классу не изменяет сам объект. И приходим опять к копированию:
public bool CreateUser(User instance)
{
if (instance.Id == 0)
{
instance.AddedTime = DateTime.Now;
instance.ActivatedLink = User.GetActivateUrl();
User newUser = new User();
newUser.Email = instance.Email;
newUser.Password = instance.Password;
newUser.AddedTime = instance.AddedTime;
newUser.ActivatedLink = instance.ActivatedLink;
Db.Users.InsertOnSubmit(newUser);
Db.Users.Context.SubmitChanges();
return true;
}
Получается тут без вариантов.Зарегистрируйтесь на Хабре, чтобы оставить комментарий
ASP.NET MVC Урок 5. Создание записи в БД