Asp.Net Mvc Model Validation

Logo
Asp.Net Mvc Model Validation
  • 1542 Okuma
  • 0 Yorum

Uygulama geliştirirken önemli konulardan bir tanesi kullanıcı tarafından alınan bilgilerin doğruluğu ve hatalı bilgi girişi durumunda kullanıcının bilgilendirilmesidir.Hal böyle olunca tasarladığımız modeller üzerinde belli kurallar belirmemiz gerekiyor.Belirlenen bu kurallar bir yönde verilerin doğruluğunu sağlarken bir yandan da uygulamanın güvenliğini sağlamaktadır.Örnek bir model tasarlayalım ve projelerimizde nasıl kullanıyoruz ona bakalım.

Örnek;
 public class Student
      {
        [Key]
        public int Id { get; set; }

        [Required(ErrorMessage = "Zorunlu alan")]
        public int ClassId { get; set; }


        [Required(ErrorMessage = "Zorunlu alan")]
        [RegularExpression(@"[A-z^şŞıİçÇöÖüÜĞğ\s]*", ErrorMessage = "Geçersiz metin girişi")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Zorunlu alan")]
        [RegularExpression(@"[A-z^şŞıİçÇöÖüÜĞğ\s]*", ErrorMessage = "Geçersiz metin girişi")]
        public string LastName { get; set; }


        [Required(ErrorMessage = "Zorunlu alan")]
        [DataType(DataType.PhoneNumber)]
        [MaxLength(11, ErrorMessage = "Telefon numarası 11 haneli olmalıdır"), MinLength(11, ErrorMessage = "Telefon numarası 11 haneli 
        olmalıdır")]
        [RegularExpression("^(?!0+$)(\\+\\d{1,3}[- ]?)?(?!0+$)\\d{10,15}$", ErrorMessage = "Telefon numarası format dışı")]
        public string PhoneNumber { get; set; }

        [Required(ErrorMessage = "Zorunlu alan")]
        [MaxLength(11, ErrorMessage = "Okul numarası 11 haneli olmalıdır"), MinLength(11, ErrorMessage = "Okul numarası 11 haneli 
        olmalıdır")]
        public string SchoolNumber { get; set; }

        [ReadOnly(true)]
        public DateTime CreateDate
        {
            get { return DateTime.Now;}
        }
        [ReadOnly(true)]
        public bool IsDeleted
        {
            get { return false;}
        }

        [Required(ErrorMessage = "Zorunlu alan")]
        [Range(1, 100, ErrorMessage = "1 ile 100 arası bir değer giriniz")]
        public int Age { get; set; }

        [Required(ErrorMessage = "Zorunlu alan")]
        [RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Format dışı email")]
        public string Email { get; set; }


        [Required(ErrorMessage = "Zorunlu alan")]
        [MaxLength(11, ErrorMessage = "Kimlik numarası 11 haneli olmalıdır"), MinLength(11, ErrorMessage = "Kimlik numarası 11 haneli 
        olmalıdır")]
        public string IdentityNumber { get; set; }
    }

Açıklamalar

  • Key :Alanın birincil anahtar olduğu belirtilir ve veritabanı oluşturulurken otomatik artan sayı olarak ayarlanır.
  • Required:Alanın zorunlu olduğu belirtilir
  • MaxLength:Maximum karakter uzunluğunu belirtir
  • MinLength:Minimum karakter uzunluğunu belirtir
  • RegularExpression:Regex ile sadece sayı girme i sadece rakam girme ,email formatı belirleyebiliriz
  • DataType:Alanın veri türü belirtilir(Date,Time,Currency,EmailAdress,Password v.b)
  • StringLength:Girilicek karakter sınırını belirler
  • Compare:İki alanı karşılaştırmak için kullanılır.
  • RedOnly:Sadece okunabilir özelliğine sahip olması için kullanılır.
  • Range:Sayısal değerler için aralık belirtmede kullanılır.

Kullanım

Controller
 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Add(Student student)
        {        
            try
            {
                using (var context = new EducationContext())
                {
                    if (!ModelState.IsValid)
                        return View(student);
                    else
                    {                       
                        context.Students.Add(student);
                        context.SaveChanges();
                        return RedirectToAction("Index", "Education");
                    }
                }
            }
            catch
            {
                return View(student);
            }
        }
View
@using (Html.BeginForm("Add", "Education", routeValue))
            {
                @Html.AntiForgeryToken()
                

                    

                        
                        @Html.TextBoxFor(student => student.Name, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.Name)
                        

                    

                    

                        
                        @Html.TextBoxFor(student => student.LastName, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.LastName)
                        

                    

                    

                        
                        @Html.TextBoxFor(student => student.IdentityNumber, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.IdentityNumber)
                        

                    

                    

                        
                        @Html.TextBoxFor(student => student.PhoneNumber, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.PhoneNumber)
                        

 
                    

                

                

                    

                        
                        @Html.TextBoxFor(student => student.Email, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.Email)
                        

                    

                    

                        
                        @Html.TextBoxFor(student => student.Age, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.Age)
                        

                    

                    

                        
                        @Html.TextBoxFor(student => student.SchoolNumber, new { @class = "form-control" })
                        
                            @Html.ValidationMessageFor(message => message.SchoolNumber)
                        

                    

                    

                        
                        @Html.DropDownListFor(student => student.ClassId, new SelectList((IEnumerable)TempData["studentClasses"],
                       "Id", "Name"), "Seçiniz", new { @class = "form-control" })
                    

                

                

                    

                        
                    

                

            }

Bir adet Asp.Net Mvc uygulaması oluşuturup controller ve view kısımlarımızı üstteki gibi configure ettik.Daha sonra Add metodu içersinde

ModelState.Isvalid kontrolü ile model belirlenen kurallara uymuyorsa modeli view’a tekrar gönderdik.ValidationMessageFor ile gelen hata mesajlarını kullanıcının görmesini sağladık.Sizde uygulamalarınızda validation süreçlerinizi bu şekilde yönetebiliriz.

Modern Taxi Drive Parking 3D Game: Taxi Games 2020

yazar
Yamak

Emre Bingül