1. C# / Говнокод #4425

    +117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    public ActionResult Register(RegisterInformation ri, string myCaptcha, HttpPostedFileBase image)
    {
        if (ri.Name == null) ModelState.AddModelError("my", "Введите имя");
        if (ri.Name != null && ri.Name.Length > 32) ModelState.AddModelError("my", "Слишком длинное имя, максимум 32 символа");
        if (ri.Password == null) ModelState.AddModelError("my", "Введите пароль");
        if (ri.Password != null && ri.Password.Length > 32) ModelState.AddModelError("my", "Слишком длинный пароль, максимум 32 символа");
        if (ri.Email == null) ModelState.AddModelError("my", "Введите адрес почты");
        if (ri.Email != null && ri.Email.Length > 32) ModelState.AddModelError("my", "Слишком длинная почта, максимум 32 символа");
        if (ri.Phone == null) ModelState.AddModelError("my", "Введите телефон");
        if (ri.Captcha == null) ModelState.AddModelError("my", "Введите символы с картинки");
        if (ri.Email != null && !IsValid.Mail(ri.Email)) ModelState.AddModelError("my", "Невалидный email");
        long phone;
        if (!long.TryParse(ri.Phone, out phone)) ModelState.AddModelError("my", "Некорректный формат телефона");
        if (ri.Captcha != null&&!CaptchaHelper.VerifyAndExpireSolution(HttpContext, myCaptcha, ri.Captcha)) ModelState.AddModelError("my", "Неверно введены символы с картинки");
    
        if (ModelState.IsValid)
        {
            ...
    }

    Проверяем модель на ошибки

    Запостил: HIMen, 23 Октября 2010

    Комментарии (7) RSS

    • Телефон хранить в лонге - это сильно.
      Ответить
    • слегка говнисто, но могло быть и хуже
      Ответить
      • public class RegisterInformation
        {
            [Required(ErrorMessage = "Введите имя")]
            [StringLength(32, ErrorMessage = "Не длиннее 32 символов")]
            public string Name { get; set; }
        
            [Required(ErrorMessage = "Введите телефон")]
            [RegularExpression(@"\d{6,18}", ErrorMessage = "Неверный номер телефона")]
            public string Phone { get; set; }
        
            ...
        }

        И получаем сразу проверку и на клиенте, и на сервере
        Ответить
        • сабж это скорее пхп-стайл. Хорошо когда язык позволяет писать так красиво = )
          Ответить
        • >[Required(ErrorMessage = "Введите имя")]
          >[StringLength(32, ErrorMessage = "Не длиннее 32 символов")]

          оно появилось недавно, 3.5 сп1, возможно они пишут еще на предыдущей версии фреймворка.
          сам код не так что бы и говно, видно что программер "не первый год женат" и знает о патернах программирования.
          Ответить
        • А если JS фреймворк не поддерживает эту фичу из ASP.NET MVC, то какая к чертям проверка на клиенте? А так же, если проект мультиязычный, то как тогда вписать в аттрибуты подсказки на ошибки? И вообще, это глупо совмещать UI обработку с моделью. Такое сгодится исключительно для примитвных проектов (поэтому эта фича у MVC сомнительна).
          Ответить
          • локализации ошибок валидации
            http://haacked.com/archive/2009/12/12/localizing-aspnetmvc-validation.aspx
            Ответить

    Добавить комментарий