Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

C# Async Programlama - Task Kullanımı

Async programa denilince akla ilk gelen 2 seçenek vardır. 

  • Task 
  • Thread

Async programlama ile daha sıklıkla kullanılan Task yapısı thread yapısına göre üst seviyede. Task yapısını kullanarak daha gelişmiş işlemler yapabiliriz. Thread pooling yapısını otomatik olarak kullanıp birbiri ardına eklenebilecek olan işlemleri daha iyi organize etmektedir.

Aşağıdaki yapıda tasks adında türü task olan bir dizi oluşturduk. Bu dizi 3 task değeri alacaktır. Task tanımlamalarımızı yaptıktan sonra Task.WaitAll(tasks) metodu ile tüm taskların çalışıp biteceğini garanti ettik.

var tasks = new[]
    {
        Task.Run(() => { işlem gelecek }),
        Task.Run(() => { işlem gelecek }),
        Task.Run(() => { işlem gelecek })
    };
	
Task.WaitAll(tasks.toArray())

*Burada ki amaç işlemleri art arda yapmaktansa birbirinden bağımsız task yaratıp birbirine paralel işlem yaratmak. Bu da bize zamandan tasarruf sağlayacaktır. 

Osman KURT
Yazılım Uzmanı

C Sharp ile Datagridview deki Kayıtları Excele Aktarma

Bu yazımda DataGridview de listelediğimiz verileri excel dosyasına aktarmayı göstereceğim. Biliyorsunuz ki projelerimizde kullandığımız verileri bazen farklı alanlarda da kullanmamız icab edebilir. O zaman ne yapacağız database de sakladığımız verileri excel gibi programlara dökeceğiz ki hedefe ulaştırmak daha kolay olsun. Lafı zuatmadan kodlarıma geçmek istiyorum ben. İşe ilk olarak Microsoft.Office.Interop.Excel.rar (166,77 kb) dosyamızı indirdikten sonra projemize referans alarak başlayalım ve alt kısımdaki kodlarımızı cs tarafına yazalım.

private void button1_Click(object sender, EventArgs e)
{
  excele_aktar(dataGridView1);
}
void excele_aktar(DataGridView dg)
{
  dg.AllowUserToAddRows = false;
  System.Globalization.CultureInfo dil = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");
  Microsoft.Office.Interop.Excel.Application Tablo = new Microsoft.Office.Interop.Excel.ApplicationClass();
  Microsoft.Office.Interop.Excel.Workbook kitap = Tablo.Workbooks.Add(true);
  Microsoft.Office.Interop.Excel.Worksheet sayfa = (Microsoft.Office.Interop.Excel.Worksheet)Tablo.ActiveSheet;
  System.Threading.Thread.CurrentThread.CurrentCulture = dil;
  Tablo.Visible = true;
  sayfa = (Worksheet)kitap.ActiveSheet;
  for (int i = 0; i < dg.Rows.Count; i++)
  {
    for (int j = 0; j < dg.ColumnCount; j++)
    {
      if (i == 0)
      {
        Tablo.Cells[1, j + 1] = dg.Columns[j].HeaderText;
      }
      Tablo.Cells[i + 2, j + 1] = dg.Rows[i].Cells[j].Value.ToString();
    }
  }
  Tablo.Visible = true;
  Tablo.UserControl = true;
}

Yazımız bu kadar arkadaşlar.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

C# da Webbrowser Kullanımı Textbox'ı Otomatik Doldurma Ve Butona Otomatik Basma

Arkadaşlar nerede kullanacağınızı bilemem ama yararlı bir kod paylaşacağım size. Nerede kullanacağınızı bilmiyorum çünkü bazı arkadaşlar bu kodu pek de iyi şeyler için kullanmıyorlar. Güvenlik açıkları olan siteler için tam bir baş belası işin aslı.

Bu yazımızda c# form tabanlı çalışacağız.İlk olarak formumuza 1 adet web browser,1 adet textbox ve 1 adet buton ekleyelim. Toolbax'ımızda mevcuttur. Şimdi buraya kadar  tamamladıksa asıl konuya geçelim gözümüze hemen daha önceden localde oluşturduğumuz web projesini çalıştıralım ve adres satırında ki adresi formumuza eklediğimiz webbrowser'ımızın url kısmına ekleyelim. URL kısmıa ekledikten sonra projeyi çalıştırdığımız da webbrowser kısmında localde ki sitenin çalıştığını göreceksiniz. Şimdi hangi tarayıcıyı kullanıyorsunuz bilmiyorum ama kaynak kodundan yada öğeyi denetle alanından sayfada ki textbox ın adını öğrenmemiz gerek ki değeri atayalım. Öğrendikten sonra birde butonumuzun adını aynı kısımdan öğrenmemiz lazım. Bunları da öğrendikten sonra atl kısımda ki kodlarımız işimizi görecektir. Formumuzda bulunan butona çift tıklayarak alt kısmıda ki kodları yazalım.

 

webBrowser1.Document.GetElementById("textboxın adı").InnerText = textBox1.Text;
foreach (HtmlElement el in webBrowser1.Document.All)
{
if (el.Name == "buton ismi")
{
el.InvokeMember("click");
}
}

ya da;

 

webBrowser1.Document.GetElementById("email").InnerText = epostaAdresi;
webBrowser1.Document.GetElementById("pass").InnerText = sifre;
webBrowser1.Document.Forms[0].InvokeMember("submit");


 

Arakadaşlar kodlarımız bu kadar. Bu kodlar webbrowser içinde ki textbox a bizim formumuza eklediğimiz textboxın içindeki değer gelecek ve butona otomatik şekilde basılacak ve işlem kendiliğinden gerçekleşecek. Tahmin edersiniz ki bunu bir döngüye soktuğumuz da nasıl tehlikeli bir yapı olduğunu görüyoruz.

Arkadaşlar bu kodları yararlı olması için paylaştım kötü amaçlar için kullanmayacağınızdan eminim.

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

 

C# da Excelden Listbox a Veri Aktarma

Arkadaşlar bu yazımızda elimizde bulunan herhangi bir excel dosyasından listboz a veri aktarmayı gösterecğim. Yapmamız gereken 1 adet windows form projesi oluşturmak ve içine 1 adet listboz 1 adet buton ve 1 adet opendialoh koymak. Daha sonra butonumuza çift tıklayarak al kısımda bulunan koldarımızı yazmak. Kodlarımız da kısaca xls dosyamızın kaynağını belirtiyoruz ve dosyamız içerisinde ki hangi alanlarda işlem yapacağamızı yazıyoruz. Daha sonra listbox.ıtems.add siyerek listbox elamanımızın içerisine verileri yazdırıyoruz.

openFileDialog1.Title = "Lütfen Dosya Seçiniz";
openFileDialog1.Filter = " (*.xls)|*.xls";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string dosya_adres = openFileDialog1.FileName; OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosya_adres + ";Extended Properties=Excel 8.0");
con.Open();
string sql2 = "select * from [Sayfa1$A1:A5000] ";
OleDbCommand veri2 = new OleDbCommand(sql2, con); OleDbDataReader dr = null;
dr = veri2.ExecuteReader();

while (dr.Read())
{
if (dr[0] != "")
{
listBox1.Items.Add(dr[0].ToString());
}
else
{
break;
}
}
con.Close();
}

Kodlarımızı bu kadar arkadaşlar, umarım faydalı olur. Örneği sadece bu boyutuyla düşünmemek lazım. Çünkü bu ufak yazılar sizlere ve bizlere yardımcı olmak ve yol göstermek amacıyla var.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

C# da Yazdığınız Programı PC Açıldığında Otomatik Başlatmak

Windows form tarafında bir programı yazdınız ve bu programı kulllanıma hazır hale getirdiniz. Ama bir problem var pc açıldığında yazdığımız olayın otomatik olarak başlaması lazım. Bunu nasıl yapıcaz peki işte bu kısa kodla. Yapmamız gereken serviceinstaller’da kod yazdığımız yere gidip,

using Microsoft.Win32;

RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
key.SetValue("ProgramAdı", "\"" + Application.ExecutablePath + "\"");

İşlemimiz bu kadar arkadaşlar herhangi bir problem kalmadı.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker

 

ASP.Net de TreeView Kullanımı

Arkadaşlar bu yazımda size asp.net treeView kullanımını göstereceğim ve sonsuz bir menu yapısı oluşturmayı göstereceğim. İlk olarak veritabanımızı oluşturalım ve sayfalar diye bir tablo açalım. Daha sonra bu tablomuzun içine SayfaId,SayfaAd,Icerik ve root alanlarını açalım. Root altsayfalama yapmamıza yarayacak alanımız.
Şimdi alt kısımda yazacağım kodu lütfen Default.aspx sayfamıza yazalım.


<asp:TreeView ID="TreeView1" runat="server" ImageSet="Arrows" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
                            <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                            <Nodes>
                                <asp:TreeNode Text="Menuler" Value="Menuler"></asp:TreeNode>
                            </Nodes>
                            <NodeStyle Font-Names="verdana" Font-Size="10pt" ForeColor="White" HorizontalPadding="5px"
                                NodeSpacing="0px" VerticalPadding="0px" />
                            <ParentNodeStyle Font-Bold="False" />
                            <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
                                VerticalPadding="0px" />
</asp:TreeView>


Bu kodlarımızı yazdıktan sonra gelin şimdi asıl kodlara c# kodlarımıza geçelim.

DataTable dt = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlDataAdapter dap = new SqlDataAdapter("select SayfaId,SayfaAd,root from Sayfalar order by root", baglan.baglanti);
            dap.Fill(dt);
            populateData(TreeView1.Nodes[0], getrows("0"));

        }
    }
DataRowCollection getrows(string id)
    {
        DataView dw = new DataView(dt);
        dw.RowFilter = "root=" + id;
        return dw.ToTable().Rows;
    }

    void populateData(TreeNode node, DataRowCollection col)
    {
        foreach (DataRow row in col)
        {
            TreeNode n = new TreeNode();
            n.Text = row[1].ToString();
            n.Value = row[0].ToString();
            node.ChildNodes.Add(n);
            populateData(n, getrows(row[0].ToString()));
        }

    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        if (TreeView1.SelectedNode.Parent != null)
        {
            Response.Redirect("SayfaDetay.aspx?SayfaId=" + TreeView1.SelectedNode.Value);
        }
    }

 


Bu kodlarımızı da Default.aspx.cs sayfamıza yazıktan sonra artık işlem bitmiş olacak ve kullanıma hazır hale gelecek.
Görüşmek Üzere;
Osman KURT
Yazılım geliştirici ve Grafiker

İsim Alanları ve .NET Sınıf Kütüphanesi

Bu yazımızda C# dilindeki namespace ler hakkında geniş bir bilgi edineceğiz. Bildiğiniz gibi programlama dillerinde, programcıların işlerini kolaylaştırmak için bir takım hazır kütüphaneler mevcuttur, bu kütüphanelerden bazıları standart olmakla birlikte bazıları programcılar tarafından sonradan geliştirlmiş ve kullanıcların hizmetine sunulmuştur. Mesela MFC ve ATL gibi kütühanelerin kendilerine has amaçları vardır, MFC kütüphanesi ile bir takım hazır C++ sınıflarına ulaşarak temelde zor olan bir takım Windows platformuna özgü işlemleri (forms, dialog box vs.) yapabiliriz. Bu da MFC programcılarına çalışır bir uygulama yapmak için daha az zaman harcatır. Bu tür kütüphaneler Visul Basic te ve Java dilinde de vardır. Fakat bu dillerin aksine C# dili ile gelen hazır bir takım sınıf kütüphaneleri bulunmamaktadır, kısacası standart bir C# kütüphanesi mevcut değildir. Bu demek değildir C# ile işimiz daha zor olacak, aslında daha kolay, .NET Framework dediğimiz altyapının bize veya diğer programlama dillerini kullanan programcılara sunduğu bir takım temel türler ve sınıflar mevcuttur. Bütün bu sınıfları ve türleri binary düzeyde iyi oırganize edebilmek için .NET, namespace kavramını sıklıkla kullanmaktadır. Demekki .NET teki sınıf kütüphaneleri bir dilden bağımsız bir yapıdadır. MFC gibi sadece C++ için yada başka bir dil için geliştirilmemiştir. Çok normal olarak Visual Basic.NET kullanıcısı ile C# kullanıcısı aynı kütüphaneden faydalanırlar.

Namespace ler .NET Framework sınıf kütüphanesindeki veri türlerini ve sınıfları kullanabilmemiz için C# dilinde using anahtar sözcüğü ile birlikte kullanılır ve derleyiciye bildirilir. Diğer dillerde ise bu isimalanları farklı şekilde derleyiciye bildirilir, ama temelde yapılan iş .NET Framework sınıf kütüphaneslerini kullanma hakkı almaktır. (Her yönüyle C# 4.0 – Sefer ALGAN)

Microsoft.CSharp : C#.Net dilini kullanarak derlemeyi ve kodlamayı sağlayan sınıfları içerir.
Microsoft.JScript : JScript dilini kullanarak derlemeyi ve kodlamayı sağlayan JScript Runtime ile sınıflarını içerir.
Microsoft.VisualBasic : Visual Basic, .Net Rumtime’ı içerir.Bu runtime, visualbasic.net dili tarafından kullanılır. Bu ad uzayı aynı zamanda visual basic programlama dili için derlemeyi ve kodlamayı sağlayan sınıfları da içerir.
Microsoft.Vsa : .Net Framework için, runtime’da kullanılmak üzere script motorlarını uygulamalarımıza yerleştirmeyi sağlayan arayüzleri içerir.
Microsoft.Win32 : Bu namespace bize 2 farklı sınıf sunar. Bunlardan birincisi işletim sistemince üretilen olayları işleyen, ikincisi ise sistem registry işleyen sınıflardır.
System : Ortak kullanıma sahip değerleri, referans edilen veri türlerini, olayları ve bu olayların işleyişlerini, çeşitli arayüzleri, özellikleri ve işlem hatalarını tanımlayan temel sınıfları içerir.
System.CodeDom.Compiler : Yazdığımız programa (çalışan programa) kod veya script ekleyebilmemizi sağlayan sınıftır.
System.Collections : Çeşitli nesne koleksiyonlarını tanımlayan arayüz ve sınıfları içerir. Örnek olarak; list, arraylist ve binnary’i verebiliriz.
System.Configuration : Yazdığımız programın içinden .net framework konfigürasyon ayarlarına erişmemizi sağlayan arayüz ve sınıfları içerir.
System.Configuration.Assembly : Bir assembly konfigürasyonunu değiştirmeyi sağlayan sınıfları içerir.
System.Data : Veritabanı kullanan projelerimizde çok işimize yarayacak olan sınıftır. Ado.Net mimarisinin temelini içinde barındıran sınıflardan oluşur.
System.Data.OleDb : .Net Data Provider’ı içerir. Bu namespace, veritabanı gibi verikaynaklarına erişim için bir sınıflar koleksiyonu sağlar.
System.Data.SqlClient : .Net Data Provider’ı içerir. Bu namespace’te oledb namespace’ine benzer bir şekilde, veritabanı gibi verikaynaklarına erişim için bir sınıflar koleksiyonu sağlar.
System.Data.SqlTypes : Sql Server içindeki veri türleri için çeşitli sınıflar tanımlar. Bu sınıflar diğer veri türlerine göre daha güvenli ve hızlıdır. Bu sınıfların kullanılmasıyla birlikte, olası tip dönüşümü sorunları ortadan kalkmaktadır.
System.Diagnotics : Sistem süreçleri, olay logları ve performans sayaçları ile etkileşim için gerekli sınıfları içerir. Bu namespace ek olarak, yazdığımız kodun adım adım işlenimi yada hata ayıklama sistemi için özel sınıflara da sahiptir.
System.Drawing : GDI+ (Graphics Device Interface) temek grafik işlevlerine erişim sağlar. Bu tip işlevlere örnek olarak; design, imaging ve printing verilebilir.
System.EnterpriseServices : COM+ servis mimarisi içerir. Bu namespace .Net Framework nesnelerini kurumsal uygulama ve projeler için daha pratik bir hale getirir.
System.Globalization : Kültürel bilgileri tanımlayan sınıfları içerir. Örnek olarak; dil, ülke, takvim, tarih, para birimi, ve sayılarla alakalı bilgiler verilebilir.
System.IO : Dosyalar üzerinden okuma ve yazmayı sağlayan veri türlerini içerir.
System.Net : Bilgisayar ağlarında kullanılan protokoller için arayüz sağlar. WebRequest ve WebResponse sınıfları, internet kaynaklarını kullanan ağ servislerinin gelişimi için temel oluşturur.
System.Net.Sockets : Ağ erişimi için önemli ve dikkat edilmesi gereken kontrollere ihtiyaç duyan yazılım geliştiricileri için, Windows Sockets (WinSock) arayüzüne olanak tanıyan sınıftır. Soket programlama için önemli özellikler içerir.
System.Object : Tüm .Net yönetimli sınıflar system.object sınıfından kalıtımla gerçekleşir. Bu kalıtım visual basic ve c# gibi dillerde compiler tarafından otomatik olarak algılanır. Object sınıfı, hiyerarşinin en üstünde yer aldığından bu tipteki bir değişkene diğer nesne referansları da atanabilir. Object sınıfı diğer tüm sınıflar içinde kalıtımla ortak hale gelen; equals, finalize, gettype, gethashcode, memberwiseclone ve tostring metotlarını içerir.
System.Runtime.Remoting : Dağıtık uygulamalar yaratmak için gereken hertürlü sınıf ve arayüzü içerir.
System.Runtime.Remoting.Channels : Uzaktaki bir nesnenin metotunun, bir istemci tarafından çağırımında kullanılan ulaştırma sisteminin, kanal ve kanal havuzlarını işleyen, destekleyen bütün sınıflarını içerir.
System.Runtime.Remoting.Channels.Http : HyperText Transfer Protokolünü kullanan tüm kanalları içerir.
System.Runtime.Remoting.Channels.Tcp : Transmission Control Protokolünü kullanan tüm kanalları içerir.
System.Security : CLR (Common Language Runtime) güvenlik sisteminin altında bulunan yapıyı sağlayan ve izinler için temel sınıfları içeren sınıftır.
System.Security.Cryptography : Şifreleme sınıflarını içinde barındırır. 3 çeşit algoritması vardır. Bunlar ; simetrik anahtar algoritması (DES, IDEA, RC5 vb.), asimetrik anahtar algoritması (RSA), karışık algoritma (PGP)’dır. Bu sınıf; sayı üretimi, hashing ve şifreleme gibi güvenli encoding ve decoding içeren servisleri içerir.
System.Security.Permissions : Algoritmaya bağımlı kalarak, işlemlere ve kaynaklara erişimi kontrol eden sınıfları içerir.
System.ServiceProcess : Windows servis uygulamaları gerçekleştirmeyi, kurmayı, yönetmeyi ve denetlemeyi sağlayan tüm sınıfları içerir.
System.Text : ASCII, Unicode, UTF-7 ve UTF-8 gibi karakter encodingi sağlayan tüm sınıfları içerir.
System.Text.RegularExpressions : .Net Framework regular expressions engine için hertürlü erişimi sağlayan sınıfları içerir. Bu namespace ise .net framework ile çalışabilen her programlama dili yada platformdan kullanılabilen regular expressions işlevselliği sağlar.
System.Threading : Thread bir işlemcinin birden çok iş yapması için yaratılan kod parçasıdır. Bu çoklu iş parçacıklarını programlamayı sağlayan sınıf ve arayüzleri ise system.threading sınıfı içerir.
System.Timers : Bu sınıf belli aralıklardaki olayları tetiklemeyi sağlayan timer bileşenini içerir.
System.Web : İstemci/sunucu iletişimini sağlayan sınıf ve arayüzleri içerir. Bu namespace, http isteğiyle bilgi içeren http request sınıfını, istemciye giden çıktıyı yöneten http response sınıfını ve sunucu taraflı zamanlar için erişim sağlayan HttpServerUtility nesnesini içerir. Bu namespace aynı zamanda cookie işleme, dosya transferi, exception information (istisna bilgisi) ve çıktı ön bellekleme denetimlerini de içerir.
System.Web.Caching : Sunucudaki kaynaklardan en sık kullanılanları ön belleğe almayı sağlayan sınıfları içerir.
System.Web.Mail : CDOSYS mesaj sistemini kullanarak, mesaj oluşturma ve göndermeyi sağlayan sınıfları içerir.
System.Web.Security : Web sunucu uygulamalarında, ASP.Net teknolojisinin güvenliğinin sağlanabilmesi için kullanılan sınıfları içerir.
System.Web.Services : Web servislerinin oluşturulması ve kullanımı için gereken sınıfları içerir. Web servisleri, internet üzerinde bulunan sunucular tarafından sağlanan ve standart internet protokelleri üzerinden çalışan, programlanabilir birimlerdir.
System.Web.SessionState : Sunucudaki bir web uygulaması içinde tek bir istemciye özel verinin tutulmasını sağlayan arayüz ve sınıfları içerir. Session state yani oturum durum verisi, kullanıcıya uygulamayla sürekli bir bağlantı varmış hissini verir.
System.Web.UI : Bir web sayfası üzerinde kullanıcı ara yüzünü oluşturan kontrollerin yaratılması için gereken sınıf ve arayüzleri sağlar. Bu namespace ortak bir işlevsellikle HTML yada web kullanıcı kontrolleri olmak üzere tüm kontrolleri içeren control sınıfına sahiptir. Ayrıca web uygulamasında bir sayfaya istem olduğu anda oluşturulan page kontrolünü de içerir.
System.Web.UI.HtmlControls : Bir web sayfası üzerinde HTML sunucu kontrolleri yaratmayı sağlayan sınıfları içerir. HTML sunucu kontrolleri sunucuda çalışır ve her tarayıcı tarafından desteklenen HTML tagleriyle temsil edilirler. Bu durum, bir web sayfasındaki HTML elemanlarının, program içinden kontrol edilebilmesini sağlar.
System.Web.UI.WebControls : Bir web sayfası üzerinde web sunucu kontrolleri yaratabilmeyi sağlayan sınıfları içerir. Web kontrolleri sunucuda çalışır ve calendar gibi özel amaçlı kontrollerle beraber button ve textbox gibi form kontrollerini de içerir. Bu namespace aynı zamanda bir web sayfası üzerindeki kontrollere, program içinden erişebilmeyi de sağlar. Web kontrolleri, HTML kontrollerinden daha farklı ve bağımsızdır. Nesne modelleri, HTML sözdizimiyle alakasızdır.
System.Windows.Forms : Windows tabanlı, Microsoft Windows işletim sisteminin sahip olduğu, zengin kullanıcı arayüzü olanaklarını kullanan uygulamaları yaratabilmek için gereken tüm sınıfları içerir.
System.Xml : Xml (extensible markup language) dili için standartlara dayalı destek sağlar.
System.Xml.Schema : Standartlara dayalı xml şemaları (xsd) için destek sağlar.
System.Xml.Serialization : Xml biçimindeki dökümanlara nesnelerin belli zamanlardaki halinin saklanmasını sağlayan sınıfları içerir.
System.Xml.XPath: Xpath ayrıştırıcısı ve değerlendirme motorunu içerir.
System.Xml.Xsl : Xslt (Extensible S. Transformation) için destek sağlar.

Görüşmek Üzere;

Osman KURT
Yazılım Geliştirici ve Grafiker

Jamshid Hashimi

Asp.net ile Sayfaya Dinamik Olarak Css ve JavaScript Dosyaları Ekleme

Asp.net ile geliştirdiğimiz web projelerinde Css ve Javscript dosyalarımızı sayfamıza eklerken design tarafından ekleriz genelde.Bu yazımızda ise cs tarafında kod yardımı ile nasıl ekleyebiliriz ona değineceğim.Bu yönetimn artısı şu şekilde düşünebilir.Örneğin urlrewrite kullanıyorsa zaman zaman javascript hatası alabiliyoruz.Bu hataları minimum seviyeye çekmek için kod yardımı ile script ve css dosyalarını yükleyebiliriz.

Dosyanın yolunu ve adını belirterek sayfamıza dinamik olarak pageload olayında aşağıdaki fonksiyon ile ekleyebiliriz.

public void css()
    {
        System.Web.UI.HtmlControls.HtmlLink css = new System.Web.UI.HtmlControls.HtmlLink();
        css.Href = "~/style.css";
        css.Attributes.Add("type", "text/css");
        css.Attributes.Add("rel", "stylesheet");
        this.Header.Controls.Add(css);
    }

Bu kodlarımızı yazdıktan sonra işlemimiz sona ermiş bulunmakta.

Not: Bu kodlarımızı eğer masterpage sayfasında kullanmah istersek this.Header.Controls.Add(css) şeklinde yapmamız lazım aksi takdirde hata verecektir.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker