Проверка новых данных лучше в Контроллере или через JS?

Приблизительно такой грамосткий и ужасный код получается :

  [HttpPost]
            public IActionResult AllCustomers(Customer customer, OldIdForCheck oldITNforcheck)
            {
                customer.UpdateDate = DateTime.Now;
                customer.CustomerITN = customer.CustomerITN.Replace("  ", string.Empty);
                //_________________________________
                if (customer.CustomerITN != oldITNforcheck.OldITN)
                {
                    if (db.Custumers.FirstOrDefault(x => x.CustomerITN == customer.CustomerITN) != null || db.Founders.FirstOrDefault(x => x.FounderITN == customer.CustomerITN) != null)
                    {
                        ViewBag.error = "Подобный ИНН уже существует. Каждый ИНН должен быть индевидуален";
                        return RedirectToAction("AllCustomers");
                    }
                }

                //..................................
                 if (!Regex.IsMatch(customer.CustomerITN, "^[0-9а-яА-Я?-]*$"))
                {
                    ViewBag.error = "ИНН может содержать только цифры";
                    return RedirectToAction("AllCustomers");
                }
                //..................................
                 if(customer.EntityType == "юридическое лицо")
                {
                    if (customer.CustomerITN.Length != 10)
                    {
                        ViewBag.error = "ИНН юридического лица состоит из 10 цифр";
                        return RedirectToAction("AllCustomers");
                    }
                }
                //..................................
                 if(customer.EntityType == "индивидуальный предприниматель")
                {
                    if (customer.CustomerITN.Length != 12)
                    {
                        ViewBag.error = "ИНН индивидуального предпринимателя состоит из 12 цифр";
                        return RedirectToAction("AllCustomers");
                    }
                }
                //_________________________________

                {
                    db.Entry(customer).State = EntityState.Modified;
                    db.SaveChanges();
                }

                return RedirectToAction("AllCustomers");

Хотел спросить у знатоков, подобную проверку прямо на странице лучше проводит через JS или в контроллере все же лучше.


Ответы (1 шт):

Автор решения: Jagailo

При MVC архитектуре - на стороне сервера лучше валидировать форму, в модели. Там, где к бд обращение - в контроллере, а лучше в каком-нибудь валидаторе, чтобы метод не захламлять ифами.

→ Ссылка