Задать вопрос
@qwead

Хранение кодов ошибок моделей и контроллеров?

Где нужно хранить коды ошибок, связанных с валидацией модели и логики контроллера?
например есть модель
public class UserModel
{
        [Required(ErrorMessage = LOGIN.REQUIRED)]
        [MinLength(3, ErrorMessage = LOGIN.MIN_LENGTH)]
        [MaxLength(12, ErrorMessage = LOGIN.MAX_LENGTH)]
        [RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = LOGIN.REGEX)]
        public string Login { get; set; }
}

Так же есть контроллер
public class UserController : Controller
{
        public ActionResult Register([FromBody]UserModel userData)
        {
                // ...
                if (!ModelState.IsValid)
                {
                        return GetValidationErrors();
                }
                // ...
                return Json(new { Errors = new[] { LOGIN.ALREADY_EXISTS }});
        }
        // ...
        private ActionResult GetValidationErrors()
        {
            return Json(
                new
                {
                    Errors = ModelState.Values.SelectMany(x => x.Errors)
                        .Select(x => x.ErrorMessage)
                        .ToArray()
                });
        }
}


Я вижу несколько вариантов:
1) Создать enum'ы в классе модели и контроллера.
Но тут проблема, то что коды enum-ов будут повторяться, если они нумероваться будут с 0, и тогда в ответе будет не понятно { errors: [1,5] }, 1 и 5 это ошибки контроллера или модели?
2) Создать какой-нибудь SuperGodClassForErrorCodesOfResponse в который пихать абсолютно все возможные ошибки и тогда уже коды ошибок точно не будут повторяться
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
Начните с конца - кто/что эти коды ошибок будет потреблять? Как этой сущности будет удобнее?
А вообще ошибки пишутся в log файл, а при анализе более важен контекст ошибки, нежели сама ошибка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы