ASP.NET MVC ile Metadata Verilerine Erişim, ASP.NET MVC ile entity yapısını kullandığımızda vazgeçilmez özelliklerden biri olan attribute’lere view’lerden erişim ile ilgili bilgileri bu makalemizden aktarmaya çalışıcam.
ASP.NET MVC ile Metadata verilerine erişim
Daha önce editortemplates ve displaytemplates ile ilgili bilgileri sizlere aktarmıştık bu makalemize gözatmadan önce bu makalelere göz atmanızı öneririm.
Bu makalede amacımız DateTime
türüne ait editortemplates’de attribute’lere erişimi görmüş olacağız. Önceki makalemizde DateTime
türündeki bir değeri formatlı olarak yazdırmak için aşağıdaki gibi bir kod kullanmıştık.
DateTime.cshtml
1 2 | @model DateTime? @Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : "", new { @class = "date" }) |
Üstte formatlamayı ToString’e formatlama değerlerini geçerek yapıyorduk EditorTemplates makalemizdeki örneğimize ait bazı kodları biraz değiştirerek daha dinamik bir yapı oluşturabiliriz.
Kullanici.cs
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 | [MetadataType(typeof(KullanıcıValidaiton))] public partial class Kullanıcı { } public class KullanıcıValidaiton { [ScaffoldColumn(false)] public int id { get; set; } [Display(Name = "Ad Soyad")] public string ad { get; set; } [Display(Name = "Şifre"), DataType(DataType.Password)] public string sifre { get; set; } [Display(Name = "Doğum Tarihi")] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime dogum { get; set; } [Display(Name = "Mail Adresi"), DataType(DataType.EmailAddress)] public string mail { get; set; } [DataType(DataType.Url), Display(Name = "Site")] public string site { get; set; } } |
DisplayFormat
adlı attribute ait ApplyFormatInEditMode
özelliğinin kullanım amacı ise Düzenleme modundayken formatlamanın geçerli olup olmayacağını belirliyoruz biz dogum adlı DateTime
türündeki alanımızın Düzenleme modundaykende dd/MM/yyyy
formatında gösterilmesini istediğimizde true
değerini verdik.
Son olarakta DateTime.cshtml
adlı templates’den aşağıdaki gibi değişiklik yaptığımızda değerin formatlı halini direk olarak alıp set edecektir ikinci defa format belirtmemizede gerek kalmaz.
DateTime.cshtml
1 2 | @model DateTime? @Html.TextBox("", Model.HasValue ? @ViewData.TemplateInfo.FormattedModelValue : "", new { @class = "date" }) |
Eğer direk olarak DisplayFormat adlı attribute’deki DataFormatString
içerisindeki değeri çekmek isterseniz aşağıdaki kodu kullanablirsiniz.
1 | @ViewData.TemplateInfo.DisplayFormatString |
Üstteki kod sonucunda aşağıdaki gibi bir sonuç oluşacaktır sayfada.
{0:dd/MM/yyyy}