Kullanıcıdan aldığımız verilerin bazı kıstaslarda olması lazım örn telefon numarasını istediğimiz biri buraya harf kaydedememeli ya da ismi 50 karakterden az olmalı gibi bu kuralları önce entityde tanımlarız.
Server Side validation isminden de anlaşılacağı üzere Server tabanlıdır yani Server’a gidip validation’un doğruluğu kontrol edilip geri döner yani server’ı yorar.
Models>EntityFramework>PersonelModel.edmx>PersonelModel.tt>Personel.cs
public partial class Personnel
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Range(2300,30000,ErrorMessage ="Salart is have to be between 2300-30000")] //Bu şekilde hata mesajını da parametre olarak verebiliriz yoksa otomatik hata mesajını döndürür
public Nullable<short> Salary { get; set; }
}
Sonrasında Controller’a gidip ilgili ActionResult’a ModelState durumu doğru mu sorgula dememiz lazım.
public ActionResult Save(Personnel personnel)
{
if (!ModelState.IsValid) //Eğer ki sana gelen model geçerli değilse (örn Name alanı zorunlu ama boş bırakılmış)
{
var model = new PersonnelFormViewModel() //Kullanıcının girdiği değerleri tutan bir model oluşturalım
{
Departments = dbPersonelKYMVCEntities.Department.ToList(),
Personnel = personnel //formda doldurduğu personeli geri gönderiyoruz ki kullanıcı girdiği değerleri kaybetmesin
};
return View("PersonnelForm",model);
}
}
En son olarak da kullanıcıya hata mesajını göstermemiz lazım bunun için View’a @Html.ValidationMessageFor ekleriz. (Daha sonra css ekleyerek hata mesajını kırmızı vs yapabiliriz)
@model ProjectPersonnel.ViewModels.PersonnelFormViewModel
@{
ViewBag.Title = "PersonnelForm";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@* @Html.ValidationSummary() bu şekilde tüm uyarları tek bir yerde de gösterebiliriz*@
@using (Html.BeginForm("Save", "Personnel", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(m => m.Personnel.Name)
@Html.TextBoxFor(m => m.Personnel.Name, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Personnel.Name)
</div>
<div class="form-group">
@Html.LabelFor(m => m.Personnel.DepartmentId)
@Html.DropDownListFor(m => m.Personnel.DepartmentId, new SelectList(Model.Departments, "Id", "Name"), "Select Department", new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Personnel.DepartmentId)
</div>
<div class="form-group">
@Html.LabelFor(m => m.Personnel.Salary)
@Html.TextBoxFor(m => m.Personnel.Salary, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Personnel.Salary)
</div>
Validation Mesajlarına Css Ekleme
Projeyi çalıştırdık incele diyip validation’un class’ını bulduk : field-validation-error
Project/Content/site.css isminde bir css dosyası oluşturduk içerisine css kodlarımızı yazdık.
.field-validation-error {
color: red;
}
.input-validation-error{
border:2px solid red;
}
Layout’a gidip css dosyamızı ekledik.

Yorum bırakın