MVC’nin en beğenilen özelliği hiç şüphesiz her türlü değişim veya kontrol görevlerimizi attribute’lere yüklüyor olabilmemizdir böylelikle çok büyük projelerde kodlar arasında kaybolmadan tek bir noktada değişim ile bütün projenizi değiştirebilirsiniz.
MVC Tarih ve Saat Formatlama Attribute’leri
Öncelikle tarih formatlama attribute’lerinden bahsedelim tarih formatlamada kullanabileceğiniz iki attribute bulunmaktadır diyelimki DateTime türünde bir alanınız var bunu hiç formatlamadan sitede gösterdiğinizde bastırılacak format şu şekilde olacaktır dd/MM/yyyy HH:mm:ss
şeklinde olacaktır ama siz sadece tarih göstermek istediğiniz iki farklı attribute ile bu isteğinizi karşılayabilirsiniz ilki şu şekildedir;
1 2 | [DataType(DataType.Date)] public DateTime Tarih { get; set; } |
DataType
attribute’ü property’inizin ne tür bilgi barındıracağını belirten bir attribute’dür. Date
türünü seçtiğinizde default olarak sayfaya bastırılacak tarih formatı dd/MM/yyyy
şeklinde olacaktır.
Diğer tarih formatı belirleme yönteminde ise tarih formatını tamamen sizin tarafınızdan belirlendiği bir yöntemdir. Kullanımı ise şu şekildedir;
1 2 | [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] public DateTime Tarih { get; set; } |
DisplayFormat
attribut’ünü sadece tarih için değil tüm propertylerde fomatlama için kullanabilirsiniz Tarih, Saat, Sayı v.b DisplayFormat
attribute’ünün ApplyFormatInEditMode
özelliği ile formatımızın Edit(Düzenleme) modundayken’de uygulanıp uygulanmayacağı belirtiyor ben uygulanmasını istediğim için true değerini verdim. verimizin formatını belirlediğimiz özellik ise DataFormatString
adlı özelliktir.
Saat içinde ayrıca açıklama yapmaya gerek olduğunu düşünmüyorum alttaki kodlarda üstteki tarih formatlamanın saat için uyarlanmış halidir. DataType
‘ın time elemanını seçtiğinizde default olarak ekrana basılacak tarih formatı HH:mm
‘dir özel bir saat formatı belirlemek istersenizde DisplayFormat
attribut’ünü kullanmalısınız.
1 2 3 4 5 | [DataType(DataType.Time)] public DateTime? Saat { get; set; } [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")] public DateTime? Saat { get; set; } |
📚 Kaynaklar
📚 İlgilenebileceğiniz Diğer Bazı Makaleler
- ASP.NET MVC ile cshtml Dosyasında Helper Oluşturma ve Kullanma
- APS.NET MVC HTML5 Data Attribute’ünü Kullanırken Oluşan Sorunu Çözme
- ASP.NET MVC ActionResult Türleri Ve Açıklamaları
✏️ Lütfen “MVC Tarih ve Saat Formatlama Attribute’leri” makalesi için olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.
Merhaba Murat Bey.
Modelde ilgili kısım şu şekilde;
[Required(ErrorMessage = “Bu alan kayıt yapabilmeniz için gereklidir.”)]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = “{0:dd/MM/yyyy}”)]
[Display(Name = “Öğrencinin Doğum Tarihi”)]
public Nullable OgrenciDogumTarihi { get; set; }
Edit actionunun viewinde tarih kısmı boş geliyor. Bunun sebebi nedir?
@Html.LabelFor(model => model.OgrenciDogumTarihi, htmlAttributes: new { @class = “control-label col-md-3” })
@Html.EditorFor(model => model.OgrenciDogumTarihi, new { htmlAttributes = new { @class = “form-control col-md-12”, @type = “date”, @min = “2000-01-01”, max = “2030-12-31” } })
@Html.ValidationMessageFor(model => model.OgrenciDogumTarihi, “”, new { @class = “text-danger” })
Teşekkürler.
property’nin tipinde nullable’ın datetime olup olmadığını belirtmemenize rağmen çalıştı mı? Normalde hiç daha önce denemediğim için merak ettim ama alttaki şekilde property türünü değiştirip, dener misiniz?
public Nullable OgrenciDogumTarihi { get; set; }
Murat bey,
kullanıcıya tarih seçtirip,kayıt sonrasında liste ekranında gösteriyorum.
tarih için her iki örneği de denememe rağmen tarih yanında saat için bol sıfırlar geliyor.
Sadece tarih gelsin istiyorum.
bilmiyorum mümkün müdür ama tarih seçtirmek yerine o günün tarihi otomatik olarak gelebilir mi?
Tarih
@*@Html.TextBoxFor(m => m.Riskler.RTARIH, new { @class = “form-control”, Type = “date” })*@
@Html.TextBoxFor(m => m.Riskler.RTARIH, “{0:yyyy-MM-dd}”, new { @class = “form-control”, Type = “date”, id = “date1”, @readonly = “true” })
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = “{0:dd/MM/yyyy}”)]
public DateTime RTARIH { get; set; }
Teşekkür ederim.
Cemil BEK
Selam Cemil,
Bu şekilde yapınca istediğiniz sonuç ortaya çıkıyor sanırım.
Model
UI
Sonuç
hocam ben form bilgilerini alıyorum veritabanına kayıt ediyorum tarih ve saat veri tabanına kayıt olunca çok uzun kayıt oluyor bir türlü çözemedim ne yapmam lazım
Çok uzun derken örnek bir ekran görüntüsüyle detaylandırabilir misiniz sorunu?