Asp.Net Mvc Model Validation
Selamlar bu makalede Asp.Net Mvc uygulamalarında DataAnnotation ile validation işlemlerini nasıl yapabiliriz onu konuşacağız.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [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); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | @using (Html.BeginForm("Add", "Education", routeValue)) { @Html.AntiForgeryToken() <div class="row col-md-12"> <div class="form-group col-md-3"> <label>Ad</label> @Html.TextBoxFor(student => student.Name, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.Name) </span> </div> <div class="form-group col-md-3"> <label>Soyad</label> @Html.TextBoxFor(student => student.LastName, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.LastName) </span> </div> <div class="form-group col-md-3"> <label>Tc Kimlik Numarası</label> @Html.TextBoxFor(student => student.IdentityNumber, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.IdentityNumber) </span> </div> <div class="form-group col-md-3"> <label>Cep Telefon</label> @Html.TextBoxFor(student => student.PhoneNumber, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.PhoneNumber) </span> </div> </div> <div class="row col-md-12"> <div class="form-group col-md-3"> <label>Email</label> @Html.TextBoxFor(student => student.Email, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.Email) </span> </div> <div class="form-group col-md-3"> <label>Yaş</label> @Html.TextBoxFor(student => student.Age, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.Age) </span> </div> <div class="form-group col-md-3"> <label>Okul Numarası</label> @Html.TextBoxFor(student => student.SchoolNumber, new { @class = "form-control" }) <span class="errorMessage"> @Html.ValidationMessageFor(message => message.SchoolNumber) </span> </div> <div class="form-group col-md-3"> <label>Sınıf</label> @Html.DropDownListFor(student => student.ClassId, new SelectList((IEnumerable)TempData["studentClasses"], "Id", "Name"), "Seçiniz", new { @class = "form-control" }) </div> </div> <div class="row col-md-12"> <div class="form-group col-md-12"> <button type="submit" class="btn btn-success">Kaydet</button> </div> </div> } |
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.
Hoşçakalın…
Son Yorumlar