Как стать автором
Обновить

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

Было бы элегантнее если в методе ActionResult Captcha() использовалась не прямая работа с Response, а вызов метода return File() т.е. FileContentResult
Ценный совет. Спасибо за идею! :)
Хороший цикл статей. Единственное замечание — не надо валидировать email регексом. Никогда. Приведенный, в частности, не пропустит доменное имя без точек.
bool IsValidEmail(string email)
{
    try {
        var addr = new System.Net.Mail.MailAddress(email);
        return addr.Address == email;
    }
    catch {
        return false;
    }
}
Спасибо за учебник, все очень доступно. Большой объем полезной информации с практикой применения, то что нужно.
Есть вопрос. Не совсем понятно, зачем нужен 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;
            }
Получается тут без вариантов.
Можно использовать metadata class + partial class.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории