MVC Foreach içinde Çoklu Foreach Gruplama

Merhaba arkadaşlar,

Üzerinde çalıştığım bir MVC projesi kapsamında talep edilen tek div elementindeki row class’ının içinde 3’lü grup olacak şekilde div class=”col-md-4″ elementini yerleştirmem gerekti.

Aşağıdaki kod hayli hayli işimi gördü, sizinle de paylaşmak istedim. Umarım işinize yarar.

Bir sonraki yazımda görüşmek üzere, şimdilik hoşçakalın.

ÇIKTISI / OUTPUT

C# cannot implicitly convert type ‘bool?’ to ‘bool’. An explicit conversion exists (are you missing a cast?) hatası

Merhabalar,

Bugün herkesin bildiği ama yeni meslektaşlarımızın biraz zamanını alan çok basit bir hatanın nedenini ve çözümünü paylaşmak istedim.

Hatamız “cannot implicitly convert type ‘bool?’ to ‘bool’. An explicit conversion exists (are you missing a cast?)

Ufak bir senaryo üzerinden ilerleyelim;
Oluşturduğumuz bir null değer atanabilen değişkeni, farklı bir durumda tekrar başka bir değişkene atamak istediğimizde oluşur. Aşağıda örnek senaryo ve yorumlar ile açıklamaya çalışacağım.

Bu hatanın nedeni; oluşturduğumuz
bool? 3 değişken alabilir. true, false ve null
bool 2 değişken alabilir. true, false

Çözümü ise çok basittir. C# Ternary Operator kullanarak aşağıda şekilde boolean değeri yakalayabilirsiniz.

C# Ternary Operator hakkında bilgi sahibi olmak için lütfen tıklayınız.

C# does not contain a definition for ‘ToList’ and no extension method ‘ToList’ accepting a first argument of type hatası

Merhaba arkadaşlar,

Dalgınlık sebebi ile eklemediğimiz referanslardan dolayı kod yazarken class ve metodlarınıza göre aşağıdaki hata ile karşılaşabilirsiniz.

does not contain a definition for ‘ToList’ and no extension method ‘ToList’ accepting a first argument of type

Sorunun çözümü ise çok basittir.

Direk olarak namespace’in üstünde referanslarımızı çağırdığımız bölüme using System.Linq; eklememiz yeterlidir.

Microsoft MSDN Kütüphanesinde ayrıntılı bilgi alabilirsiniz.
http://msdn.microsoft.com/en-us/library/bb342261.aspx

Ufak ama faydalı bir not olduğuna inanıyorum, bir sonraki yazımda görüşmek üzere.

C# DataTable To Object Mapping

Merhaba arkadaşlar,

Bugün uzun zamandır paylaşmak istediğim çok kullanılan bir convert işlemi üzerine yazı eklemek istedim.

Bazı durumlarda gerekli olan LINQ sorguları projemiz içerisinde gerçekten can sıkıcı ve zorlayıcı olabiliyor.

Burada imdada T-SQL veya farklı bir yol ile çekilen dataların, objemizin içine map’lenmesi yolu yetişiyor.

Senaryomuza göre, Video classımıza bir DataTable‘dan dataların maplenmesini göstereceğim.

Video Classımızın içeriği aşağıdadır.

dtVideoList DataTable’ımıza verileri çektik.

Ardından aşağıdaki gibi map’lemek istediğimiz sorgumuzda yer alan VideoID, VideoTitle, VideoCreatedOn, Count alanlarımız Video classımızda yer alan ID,Title, CreatedOn, ViewCount alanlarına maplenmiş olacak.

Son durumda ise sorgumuzda gelen datalar başarı ile Video classımızdaki alanlar ile map’lendi. Bundan sonrası sizin gerçekleştirmek istediğiniz işlemlere göre gerçekleşebilir.

Umarım faydalı olmuştur, bir sonraki yazımda görüşmek üzere

Web Reference ile Servis Reference arasındaki fark

Merhabalar,

Projemiz üzerinde web servisler ile ilgili bazı düzenlemeler yaparken aklıma Web Referance ile Servis Referance‘ın farkı nedir sorusunun cevabını sizinle paylaşmak istedim.

Web Reference, Servis Reference‘a göre daha eski ve ASP.NET Webservislerinde (ASMX) teknolojisini kullanmaktadır. Haliyle işlemler sadece XmlSerializer üzerinden yürüyecektir. Publish sonucunda ASMX Client’ları için ASMX Webservisi elde edilmiş olacaktır.

Web Referans‘ı Web App, Web Site, Console App, Winforms projelerinin herhangi birinde kullanabilirsiniz.

WCF Service Reference eklemek ise; yukarıdaki işlemlerin yeni bir yoludur. Web Reference eklemeye göre daha esnek ve daha kolaylıklar sağlamaktadır.

Projenizi WCF’e taşımak gibi bir niyetiniz yok ise, eski stil web reference’ı projelerinizde kullanabilirsiniz.

Buraya kadar anlatmışken web servis projemize nasıl dahil edilir, onu da paylaşmak isterim.

Projemizde web servisin ekleneceği klasöre sağ tıklayıp “Add Service Reference” a tıklanır.


ws_1


ws_1

Ardından açılan pencerede eğer “Web Reference” ekleyecek ise “Advance” butonuna tıklayarak diğer pencereye geçilir. Yeni açılan pencerende de “Add Web Reference” butonuna tıkladığımızda ise Web Reference’ı eklemek için gerekli sayfayı görebilirsiniz.


ws_3

C# Hata: The name ‘ConfigurationManager’ does not exist in the current context

Merhabalar

Bir projede karşılaştığım The name ‘ConfigurationManager’ does not exist in the current context hatasının nedenini ve çözümünü sizinle paylaşmak istiyorum.

Öncelikle amacım, aynı solution’da yer alan 2 farklı Project’den A Projesinde yer alan web.config dosyasındaki bir değeri B Projesinden erişmek ve bu değer ile bazı işlemler yapmaktı.

Haliyle, B projesinde kod kısmında aşağıdaki ConfigurationManager kullanarak erişmek istedim ve bu malum hatayı aldım.

Çözümü ise çok basittir.

B Projesine References’ sağ tıklayarak > AddReference > System.Configuration ‘ı aratarak, ekliyoruz. Böylelikle artık B projemizde, A Projesinin web.config dosyasında olan değere erişebilir ve istediğiniz gibi kullanabilirsiniz.

Umarım faydalı olmuştur, bir sonraki yazımda görüşmek üzere.

C# Kod akışını geçici olarak durdurmak (askıya almak)

Merhaba arkadaşlar,

Bazı senaryolarda projemiz içerisindeki kod akışını durdurmamız gerekebilir. Ne zaman ihtiyacımız olur derseniz, örneğin SMS Entegrasyonu dahilinde SMS gönderimi yapıyoruz. Gönderme işlemi (request) yapıldıktan sonra geri dönen cevabın (ileti raporu diyebiliriz) durumuna göre Log tablosunda bazı güncellemeler yapmamız gerekebilir.

Beklediğimiz cevabın (response) gelmesi hatların yoğunluğundan bazen 3 saniye sürebiliyor, bazen 30 saniye sürebiliyor. Bu durumu kestiremediğimiz için ortalama bir bekleme süresi belirleyip, gönderdiğimiz sms’e ait ileti raporunun kesin geldiğine emin olabiliriz.

Bunun için aşağıdaki kodları kullanarak projedeki kod akışını belirleyeceğimiz bir süre zarfında durdurabiliriz. Kendini parametredeki milisaniye (ms) süresini değiştirerek istediğiniz kadar süreyi değiştirebilirsiniz.

1 saniye = 1000 ms (milisaniye)

C# Proje kod akışını 5 saniye durdurmak

C# Proje kod akışını 10 saniye durdurmak

C# Proje kod akışını 1 dakika durdurmak

C# Hata: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

Merhaba arkadaşlar,

Projenizde aşağıdaki gibi bir hata ile karşılaşırsanız tekrar dikkatli gözden geçirmeniz gerekenlerden bahsetmek isterim.

“Index (zero based) must be greater than or equal to zero and less than the size of the argument list.”

Bu hatanın nedenini öncelikle gönderdiğiniz değerlerin biri/birileri boş dönmektedir.

Örnek senaryomuzda “Ömer Yılmaz Bilgisayar Mühendisi” yazısını String.Format() metodu yardımı ile “testText” değişkenine atalım.

Olması gereken yukarıda yazdığım gibidir, ama kod içerisinde yer alan 1-2-3 değerlerinden herhangi birine karşılık gelen, değer boş gelse idi “Index (zero based) must be greater than or equal to zero and less than the size of the argument list.” hatasını alacaktınız.

Bir sonraki yazımızda görüşmek üzere, hoşçakalın

.net Projelerinde Türkçe Karakter Sorun Çözümü

Merhabalar,

Bazı projelerde karşılaştığım Türkçe karakter probleminin, nasıl çözüleceğini sizinle paylaşmak istiyorum.

Öncelikle yapmanız gerekenleri sırası ile üzerinden geçelim.

1) Meta tag’ına charset atamak.
tagları arasına aşağıdaki meta tag’ı eklemelisiniz.

2) Text editöründen encoding ayarları
Eklediğiniz meta tag işe yaramadıysa, notepad++ gibi bir editör aracılığı ile açtığınız dosyayı, iso-8859-9 veya UTF-8 olarak encode edebilirsiniz.

3) Web.config’den Globalization
Tüm bunları denediniz, hiç biri işe yaramadı ise, aşağıdaki kodu web.config dosyasında yer alan etiketi arasına eklerseniz sorun düzelicektir.

LINQ sorgusunda aynı gün kontrolü (EntityFunctions.TruncateTime)

Merhabalar,

Bir senaryoya göre, projeye giriş yapan kullanıcıların aynı gün içerisinde tekrar girip girmediğini kontrol etmemiz gerekiyor.

Bunun için öncelikle LoginDate değişkenimize, bugüne ait zaman gün bilgilerini Date sınıfını kullanarak atıyoruz.

Hemen ardından LINQ sorgumuzda bu değişkeni, Entity Framework tarafından gelen objemize eşit olup olmadığını kontrol edeceğiz. Bu kontrolü .NET 4.0 ve üzeri tarafından desteklenen EntityFunctions.TruncateTime fonksiyonunu kullanarak gerçekleştirebiliriz.

Kısaca senaryomuz bu şekilde, hemen aşağıda ise bu senaryoyu kod tarafında hayata nasıl geçirebiliriz ona ait bir örnek paylaştım.

Umarım işinize yarar, çalışmalarınızda kolaylıklar dilerim.