MVC’de tarih formatını düzenleme

Asp.Net  Mayıs 7, 2015

Bu yazımda MVC ortamında actiona parametre olarak geçireceğiniz DateTime nesnesinin formatını nasıl değiştireceğinizden bahsedeceğim.

Bu hususta bir çok yöntem olsa da yine nesnel bir çözüm en temizi oluyor. Konu ModelBinder kapsamında. ModelBinder nesnesi olası bir modelin clientten yazılım ortamına geçerken nasıl ve neye göre alınacağını belirliyor. Standartta MVC framework yazıları, sayıları vs sıkıntısız alabiliyor. Ancak tarihle ilgili bir sıkıntı yaşamamak elde değil. Tarih formatları malumunuz server ayarları ile alınıp verilmekte. Eğer farklı bir culture sahipseniz (TR gibi) formatı elle yakalamanız gerekir. Projenize bir sınıf oluşturun aşağıdaki gibi

public class DateTimeBinder: IModelBinder
 {

 public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
 {
 string key = bindingContext.ModelName;
 ValueProviderResult result = bindingContext.ValueProvider.GetValue(key);
 if (result == null)
 {
 return null;
 }
 return result.ConvertTo(typeof(DateTime?), System.Globalization.CultureInfo.CurrentCulture);
 }
 }

Yukarıda ki formatlama işlemi DateTime? (nullable olan) için yapılmıştır, projemde tarihleri Nullable kullandığım için. Siz isterseniz DateTime direk kullanabilirsiniz. Her ne ise. Bu sınıfı oluşturduktan sonra (System.Web.MVC usinge eklemeyi unutmayın) ikinci adımda da bu sınıfı MVC ortamına tanıtmak gerekiyor. Hemen Global.asax altında bulunan Application_Start fonksiyonunun içine şu kodu yerleştirin.

ModelBinders.Binders[typeof(DateTime?)] = new DateTimeBinder();

Tekrar hatırlatmam gerek benim ihtiyacım DateTime? siz classta ne tanımlamışsanız aynı tiple eşleştirmelisiniz. Artık projeniz gün.ay.yıl formatında tarihleri kabul edecektir. Unutmadan Web.Config’de Culture ayarı TR yapılmalı.

Esenlikle…

Bu yazı 2126 defa görüntülendi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yazar Hakkında

15 yıllık çalışma hayatında birçok proje geliştirmiş binlerce projeyi inceleme fırsatı bulmuş yazılım aşığıdır. İşini hobi olarak gören yazarımız iş hayatını profesyonelce zevkle sürdürmektedir.

Son Eklenenler