MVC Doğrulama (Validation) Kontrolleri - II

1. DisplayName 

Model içerisinde tanımladığımız alan adının, view sayfasında nasıl görüneceğini belirliyoruz ve LabelFor içerisinde çağırdığımızda bu nitelik çalışmaktadır. Alternatif olarak Display(Name="isim") şeklinde de kullanılabilir. Örneğin, Ad alanının Kategori olarak görünmesi için aşağıdaki gibi tanımlama yapılır.

Model sınıfı içerisinde kategori adı tanımlaması:

[DisplayName("Kategori")] 
public string Ad { get; set; } 


view sayfasındaki tanımlama:

<div class="editor-label">@Html.LabelFor(model => model.Ad)</div>
<div class="editor-field">@Html.TextBoxFor(model => model.Ad)</div>
<div>@Html.ValidationMessageFor(model => model.Ad)</div>


2. ScaffoldColumn

Düzenlenmesini istemediğimiz model alanı için kullanılır. Böylece bu alan EditorForModel kullandığımızda gizlenecektir. Örneğin, modelin id’sini kendimiz belirlemiyoruz. Bu alanı veritabanına bırakıyoruz. Dolayısıyla bu alan için ScaffoldColumn niteliği kullanabiliriz.

[ScaffoldColumn(false)] 
public int Id { get; set; } 


3. DisplayFormat 

Model alanını formatlı göstermek için kullanabiliriz.
Örneğin;

[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString="{0:c}")] 
public decimal Ucret { get; set; } 


Şeklinde bir kullanımda, bu alanın görüntüsü söyle olacaktır:

12.50 TL 

ApplyFormatInEditMode özelliği varsayılan olarak false’dur. Eğer bu formatlı görüntünün input içerisinde de görünmesini istiyorsak true yaparız.

[DisplayFormat(ApplyFormatInEditMode=true, DataFormatString="{0:dd.MM.yyyy}")] 
public DateTime DogumTarihi { get; set; } 


Şeklinde bir kullanımda, bu alanın görüntüsü söyle olacaktır:
15.02.2015 

4. ReadOnly 

Bu niteliği kullandığımız alan değiştirilemez, sadece görüntülenir.
Kullanımı;

[ReadOnly(true)] 
public decimal Ucret { get; set; } 


5. DataType 

Modelin alanı için veri tipi belirleyebiliriz.
Örneğin;

[DataType(DataType.Password)] 
public string Sifre { get; set; } 


Şeklinde bir tanımlama yaparsak, textbox içerisine girdiğimiz karakterler, yıldız olarak görünecektir.

6. Key 

[Key] 
public string Id { get; set; } 


Üstteki kodda Id alanının primary key (birincil anahtar) özelliğine sahip olduğunu belirtiyoruz böylece oluşturulacak veri tabanında bu alan otomatik olarak birincil anahtar olacak ve otomatik artan sayı olarak ayarlanacaktır.

7. Table 

Varsayılan Code First yapısı, tablo isimlerini sınıf yapısı ismiyle aynı olacak şekilde oluşturur. Sınıf isminden farklı bir isimde tablo oluşturmak için Table özelliği kullanılabilir.

[Table("UrunKategorileri")]
public class Kategori { public int Id { get; set; } }


Yukarıdaki örnekte tablo ismi sınıf adı olan Kategori değil, UrunKategorileri şeklinde oluşturulacaktır.

8. NotMapped 

Veritabanında oluşturulması istenmeyen alan tanımları için kullanılır. Aşağıdaki örnek ile örneğin kullanıcı şifresini tekrar girmesini istedigimizde bu iki şifre karşılaştırılır. Fakat SifreTekrar alanının veritabanına kaydedilmesi gerekmez.
Örnek kullanımı;

public string Sifre { get; set; } 
[Compare("Sifre", ErrorMessage = "Şifre ve tekrar aynı değil")] 
[NotMapped] 
public string SifreTekrar { get; set; }


9. EmailAddress 

E-posta adreslerinin doğruluk kontrolü için kullanılır. 

[EmailAddress(ErrorMessage = "Geçersiz E-Posta adresi!")] 
public string Eposta { get; set; } 


10. URL 

Web adreslerinin doğruluk kontrolü için kullanılır.

[Url(ErrorMessage = "Geçersiz URL!")] 
public string WebAdresi { get; set; } 


11. ForeignKey 

public int Karegori_Id { get; set; } 
[ForeignKey("Kategori_Id")] 
public virtual Kategori Kategori { get; set; } 


Üstteki kodda Kategori_Id alanının foreign key (yabancı anahtar) özelliğine sahip olduğunu belirtiyoruz. Bu özellikle tablo ilişkilerini tanımlamış oluyoruz.

12. Column 

Bu özellikle bir alanın SQL Server veri türü karşılığı belirtilir.

[Column(TypeName = "date")]
 

Kaynak: https://mvcogren.blogspot.com/

Listeye Dön