Где нужно хранить коды ошибок, связанных с валидацией модели и логики контроллера?
например есть модель
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 в который пихать абсолютно все возможные ошибки и тогда уже коды ошибок точно не будут повторяться