c# da Is Numaric kontrolü (fonksiyonu) 23 Eylül 2014 Merhaba, Çerezlik kodları sık sık yeni blokta paylaşmayı düşünüyorum. Haydi başlayalım… Daha önce Visual Basic ile ilgilenmiş olanlar bilir Visual Basic de bulunan IsNumaric fonksiyonu C# da bulunmamaktadır. C#’da IsNumeric fonksiyonu yerine IsNumber fonksiyonu mevcuttur fakat sadece char tipinde çalışmaktadır. Bunu şu şekilde kontrol edebiliriz. public bool IsNumeric(string value) { foreach (char c in value) if (!((Int16)c > 47 && (Int16)c < 58)) return false; return true; } Ayrıca IsNumaric metodunu şu şekildede yazabiliriz. Burada string değeri integer’a convert ederek oluşan Exception durumuna göre true ya da false döndürüyoruz. public bool IsNumeric(string value) { try { Convert.ToInt32(value); return true; } catch (Exception) { return false; } } Bir dahaki yazıda görüşmek üzere… Yorum Yok C#, CODE, CONVERT.TOINT32, CSHARP, EXTENSİON METHOD, FUNCTİON, ISNUMARİC FUNCTİON, İSNUMERİC, SOURCE, STATİC, VBNET, detay...
Asp.Net 4.0 ile gelen URL Routing ile SEO uyumlu sayfalar yapma 23 Eylül 2014 Url Routing url’lerimizin nasıl yönlendirileceği ve sonrasında nasıl yorumlandırılacağı işlemini yapmaktadır. Arama motorları tarafından içeriklerimizin anlaşılır bir yapıda olması ve içeriklerimizin SEO uyumlu hale gelebilmesi için Url Routing’e ihtiyaç duymaktayız. Örneğin : www.ufukaytas.com/id=5 Arama motorları için bir anlam ifade etmez. Bunun yerine ; www.ufukaytas.com/Makale/Asp.Net-4.0-Url-Routing/5 gibi bir yöntemi kullandığımızda arama motorları sayfamızı daha doğru bir şekilde indexleme işlemi yapar. Asp.Net 4.0 da bu Url Rewrite işlemini nasıl yaptığımız bir örnekle pekiştirelim… Öncelikle global.asax dosyamızı açalım ve içine gerekli düzenlemeleri yapalım. Burada gelen requestleri ilgili sayfamıza yönlendirme işlemi yapmaktayız. void Application_Start(object sender, EventArgs e) { // Code that runs on application startup RegisterRoutes(RouteTable.Routes); } public void RegisterRoutes(RouteCollection routes) { // Route tanımlaması yapıyoruz. Yapımız site.com/Makaleler/Makale-Adi/{ID} şeklinde olacak // bu şekilde bir url geldiğinde detay.aspx sayfamıza yönlendirme yapıyoruz... routes.MapPageRoute("MakaleRoute", "Makaleler/{MakaleAdi}/{MakaleID}", "~/detay.aspx"); } Şimdi bu yapıyı kullanabilmek için bir veritabanı oluşturalım ve makaleler adlı bir tablo yaratalım ve içine bir kaç kayıt girelim… default.aspx sayfamızda datalist kontrolümüzü ekliyoruz ve sqldatasource ile veritabanından makaleleri yüklüyoruz… <asp:DataList ID="DataList1" runat="server" CellPadding="4" DataKeyField="MakaleID" DataSourceID="SqlDataSource1" ForeColor="#333333" Width="1110px" onitemdatabound="DataList1_ItemDataBound"> <AlternatingItemStyle BackColor="White" /> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <ItemStyle BackColor="#EFF3FB" /> <ItemTemplate> MakaleID: <asp:Label ID="MakaleIDLabel" runat="server" Text='<%# Eval("MakaleID") %>' /> <br /> MakaleAdi: <asp:HyperLink ID="hlMakaleAdi" runat="server" Text='<%# Eval("MakaleAdi") %>' /> <br /> <br /> </ItemTemplate> <SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> </asp:DataList> <form id="form1" runat="server"> <div> </div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MakalelerConnectionString %>" SelectCommand="SELECT [MakaleID], [MakaleAdi] FROM [Makaleler]"> </asp:SqlDataSource> Şimdi de Datalist’imizin ItemTemplate’indeki Hyperlink kontrolümüze ulaşarak NavigateUrl’yi bizim istediğimiz formatta yazacağız. protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { try { HyperLink hlMakaleAdi = (HyperLink)e.Item.FindControl("hlMakaleAdi"); /* Hyperlink için navagateUrl tanımlarken * global.asax içinde tanımlamış olduğumuz (routes.MapPageRoute("MakaleRoute", "Makaleler/{MakaleAdi}/{MakaleID}", "~/makale_detay.aspx");) * Makaleler/{MakaleAdi}/{MakaleID} yapıyı url'mizde oluşturuyoruz... */ hlMakaleAdi.NavigateUrl = "~/Makaleler/" + KodOlustur(DataBinder.Eval(e.Item.DataItem, "MakaleAdi").ToString()) + "/" + DataBinder.Eval(e.Item.DataItem, "MakaleID").ToString(); } catch (Exception ex) { Response.Write(ex.Message); } } Burada Hyperlink de url lerimizi resimdeki gibi “/Makaleler/ASPNET-40-URL-ROUTING/7″ istediğimiz formatta oluşturduk. Makale Adındaki türkçe karakterleri ve boşlukları temizlemek için KodOlustur adlı Metodumuzu kullanıyoruz… Kod Oluşturma Methodu #region "Kod Oluştur" /// <summary> /// Makale Adı için gelen Başlığımızdaki türkçe karakterleri temizliyoruz ve boşlukları (-) ile değiştiriyoruz. /// </summary> /// <param name="Text"></param> /// <returns></returns> public static string KodOlustur(string Text) { try { string strReturn = Text.Trim(); strReturn = strReturn.Replace("ğ", "g"); strReturn = strReturn.Replace("Ğ", "G"); strReturn = strReturn.Replace("ü", "u"); strReturn = strReturn.Replace("Ü", "U"); strReturn = strReturn.Replace("ş", "s"); strReturn = strReturn.Replace("Ş", "S"); strReturn = strReturn.Replace("ı", "i"); strReturn = strReturn.Replace("İ", "I"); strReturn = strReturn.Replace("ö", "o"); strReturn = strReturn.Replace("Ö", "O"); strReturn = strReturn.Replace("ç", "c"); strReturn = strReturn.Replace("Ç", "C"); strReturn = strReturn.Replace("-", "+"); strReturn = strReturn.Replace(" ", "+"); strReturn = strReturn.Trim(); strReturn = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9+]").Replace(strReturn, ""); strReturn = strReturn.Trim(); strReturn = strReturn.Replace("+", "-"); return strReturn; } catch (Exception ex) { throw ex; } } #endregion Artık Url’lerimiz bizim istediğimiz formatta oluştu ve global.asax daki tanımlamamıza göre detay.aspx sayfasına yönlenmiş oldu. Şimdi detay sayfasında Route ile gelen parametlerele nasıl ulaştığımıza bakalım… Öncelikle detay.aspx adlı bir sayfa oluşturalım ve içine alttaki label’ları ekleyelim… <h1>Detay Sayfa</h1> <p>Gelen ID : <asp:Label ID="lblMakaleID" runat="server"></asp:Label></p> <p>Başlık : <asp:Label ID="lblMakaleBaslik" runat="server"></asp:Label></p> Daha sonra Page_Load da alttaki kodları ekleyelim… routes.MapPageRoute da tanımladığımız “MakaleID” ve “MakaleAdi” adlı parametrelere RouteData.Value ile ulaşıyoruz. Burada içeriğin ilgili ID sine ulaştıktan sonra geriye veritabanındaki tablodan o içeriğin bilgilerini çekmek kalıyor. protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (RouteData.Values["MakaleID"] != null) { lblMakaleID.Text = RouteData.Values["MakaleID"].ToString(); lblMakaleBaslik.Text = RouteData.Values["MakaleAdi"].ToString(); } } } Yönlendirme işlemimizi tamamlamış olduk. Peki bazı sayfaların kısıtlanmasını istersek ne yapacağız. Bunun için Ignore metodunu kullanabiliriz. Ignore işlemini Regular Expression yardımıyla yapmaktayız. Örnek olarak : // .aspx sayfalarımızı yok sayıyoruz (ignore) routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" }); Örnek projeyi indirmek için link Başka bir yazıda görüşmek dileğiyle… Saygılarımla... Ufuk Aytaş 1 adet yorum arama motorları, seo, ASP.NET 4.0, ASP.NET 4.0 URL Rewrite, datalist, hyperlink, Ignore routing, seo uyumlu sayfa yapma, sqldatasource, Url Routing, detay...
Visual Studio için Smart Paster Add-In 2 Ocak 2015 Smart Paster panoya kopyalanan text'lerinizi Yorum, Literal string, Verbatim string (@string) ve StringBuilder olarak yapıştırabilmemizi sağlayarak bize büyük kolaylık sağlamaktadır. Genellikle server side tarafında herhangi bir text'i string e çevirmek istediğimizde bizi uğraştırmakta, zaman kaybı yaşatmaktadır. Çoğu zaman birden fazla satırlı text'lerle uğraşmak ciddi zaman kaybına ve can sıkıntılarına neden olur. İşte bu tarz string'e çevirme işlemlerinde Smart Paster bize büyük kolaylık sağlamaktadır. C# and VB.net dillerini, VS 2013 ve VS 2015 versiyonlarını desteklemektedir. Ayrıca daha eski visual studio sürümleri için (VS 2010, VS 2012 ) tıklayınız. https://smartpaster2010.codeplex.com/ Yorum Yok smart paster, visual studio, addin, extention, asp.net, c#, detay...