Müdavim Girişi

E-Posta
Parola

Ücretsiz Kayıt Ol


Online Müdavimler (0 Kişi)
  • Online Kişi Bulunmadı

Yazar Hakkında
x
İsmail Kocacan
İsmail Kocacan is experienced on many development platforms and continues to learn technologies. Since the age of 16-17, dealing with software technologies. And continuous learning, teaching, research, continues to develop.
Javascript Kodlarını Dinamik Olarak eklemek

 Merhaba Arkadaslar;

 Kodlamalarimda genelde karsilastigim sorun(lari) ve gelistirdigim çözümleri sizlerle paylasiyorum. Yine önüme çikan ve aklima takilan bir sorun. Ben aklima takilan sorun, sorunlari çözmezsem, çözemezsem uyuz olurum. Bu sorunu da biraz ugrastiktan sonra çözdüm.
 
Biliyorsunuz Biz asp.net projeleri gelistirirken Javascript kullanma durumunda kalabiliyoruz.JavaScript kodlarini Sayfamizin Head kismina <Script> taglari arasinda yaziyoruz.veya Harici bir. js uzantili dosyaya yazip yazdigimiz dosya link veriyoruz.
Tabi yaptigimiz bu islemlerin hepsi Statik islemler. Yani Script kodlarini Tek tek sayfalara kendimiz yaziyoruz. veya link veriyoruz. Bütün bunlari yapmak yerine biz script kodlarini bir kere yazip, bunu her sayfanin head kismina otomatik ekleyen dinamik bir C# kodu yazsak ne kadar güzel olurdu degildi mi? Hem böyle yapinca söyle bir hamalliktan da kurtulmus olacagiz. Düsünün Script kodunda bir degisiklik yapilacak Tek tek her sayfada düzeltmek yerine, gidip bu düzenleme isini tek bir yerde yapip tüm projeye yansimasini saglamak bizi is yükünden de kurtaracaktir. Hem de Kontrol kolaylasacaktir.
 
Biliyoruzki sayfalar System.Web.UI.Page Nesne(Sinif)sinden türer. Yine MasterPage’lerde UserControl nesnesinden türer. public class MasterPage : UserControl seklinde.
Kalitim bu sekilde saglaniyor.

Simdi Projemize SayfaNesnesi isminde bir Nesne(Class) ekleyelim. Ve nesneyi asagidaki gibi düzenleyelim

using System;
using System.Web.UI.HtmlControls;
 
namespace Crossinheritens
{
    public class SayfaNesnesi : System.Web.UI.Page
    {
        protected override void OnLoad(EventArgs e)
        {
            this.ScriptEkle();
        }
 
        public void ScriptEkle()
        {
            HtmlGenericControl hgc = new HtmlGenericControl("script");
            hgc.Attributes.Add("language ", "javascript");
            hgc.Attributes.Add("type", " text/javascript");
            hgc.InnerHtml= "function mesaj(){alert('selam kelam');}";
            this.Page.Header.Controls.Add(hgc);
        }
    }
}

 
Yukarida gördügünüz gibi SayfaNesnesi Classini System.Web.UI.Page sinifindan türettik. Bu demektir kalitim kurallarina göre türeyen class(Nesne),türedigi class(Nesne) in tüm özelliklerini, methodlarini vs kullanabilir demektir.
Artik elimizde SayfaNesnesi adinda Page Sinifindan Türeyen, içersinde ScriptEkle()diye Bir Procedure ve Onload olayi ovverride edilmis ve OnLoad da ScriptEkle()methodu çagrilan bir nesnemiz var. Yani SayfaNesnesi Classi Page sinifinin tüm özelliklerini içeriyor ve içersinde de extiradan Sayfanin Head kismina Javascript kodu ekleyen bir methodu var.
 
Simdi sunu yapiyoruz;
Projemize bir tane HastirPage. master Sayfasi ekliyoruz. Ve MasterPage üzerindeyken Add Content Page komutuyla masterpageden türeyen sayfalar ekliyoruz.
 
 
 
HastirPage. master

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="HastirPage.master.cs" Inherits="Crossinheritens.HastirPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
       
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

 
 
Sayfa3.aspx

<%@ Page Language="C#" MasterPageFile="~/HastirPage.Master" AutoEventWireup="true" CodeBehind="Sayfa3.aspx.cs" Inherits="Crossinheritens.Sayfa3" Title="Sayfa3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>


Sayfa3.aspx. cs

using System;
namespace Crossinheritens
{
    public partial class Sayfa3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
    }
}

Simdi yukarida gördügünüz gibi Sayfa3 nesnesi Page sinifindan türüyor. Biz iste burada türetme islemini daha önce yazmis oldugumuz SayfaNesnesi sinden yapicaz. Yani asagidaki gibi;
Sayfa3.aspx. cs

using System;
namespace Crossinheritens
{
    public partial class Sayfa3 : SayfaNesnesi
    {
        protected void Page_Load(object sender, EventArgs e)
        {
      
        }
    }
}

Bu islemi diger sayfalara uyguluyoruz.
 
Sayfa4.aspx

<%@ Page Language="C#" MasterPageFile="~/HastirPage.Master" AutoEventWireup="true" CodeBehind="Sayfa4.aspx.cs" Inherits="Crossinheritens.Sayfa4" Title="Sayfa4" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>
 

 
Sayfa4.aspx. cs

using System;
namespace Crossinheritens
{
    public partial class Sayfa4 : SayfaNesnesi
    {
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
    }
}

Simdi Sayfa3.aspx ve Sayfa4.aspx’in Head Kisimlarina bakarsaniz hiçbir sekilde Javascript kodu filan yok. Uygulamayi çalistirdiktan sonra;




Gördügünüz gibi Script Kodlari Sayfa3 ve Sayfa4 eklendi. Çünkü bu sayfalarin Classlarini SayfaNesnesi Classindan türettik. Ve amacimiza ulasmis olduk.
 
 
Yine HtmlGenericControl nesnesini kullanarak istediginiz gibi HTML nesneleri olusturabilirsiniz.
 
Sonuç Olarak;
Ben bu yazida sizlere JavaScript kodlarini C# ile dinamik olarak nasil sayfanin Head kismina ekleriz bunu anlatmak istedim. Farkli senaryolar için kullanilabilir. Kullanim alani sizlere kalmis.
 
 
Ismail Kocacan

 

Kategori : Asp.Net | 14.10.2010 16:08:00  | 1691 defa okundu  | 0 Yorum |

Yazara Ait Diğer Makaleler(51) Makaleye Yapılan Yorumlar İlk yorum yazan siz olun
Ara
 
Anket
Hangi VeriTabanı Yönetim Sistemini Kullanıyorsunuz ?