none
Sayfa 2 defa tetikleniyor RRS feed

  • Soru

  • Değerli arkadaşlar ben bir proje yazmaya çalışıyorum ve her şey normal giderken routing yaptım bu routing'den sonra sayfa 2 defa tetiklenmeye başladı neden 2 defa tetiklendiğini bir türlü anlamdım
    ama 2 defa tetiklenme olayı  routing  yaptıkdan sonra olduğuna eminim çunku ruting işlemini iptal ettiğimde breakpoint paage load'a 1 defa dönüyor

    ..<a href='User/"+Eval("yol")+"'>
    ---------------------------------------------
    RouteTable.Routes.MapPageRoute("user", "User/{adi}", "~/user.aspx"
    ---------------------------------------------
    string[] bilgi= Sınıfımm.UserInfo(RouteData.Values["adi"].ToString()).Split('|');

    Çok araştırdım resimlerin url'si boşsa doldurun gibi yazılar okudum ve birde web.config'de böyle bir tag ekledim autoEventWireup="false" ama sonuç aynı page load 2 defa tetikleniyor.

    Kıymetli arkadaşlar bunu mutlaka yapmam lazım nasıl çıkıcam işin içinden.

    18 Ağustos 2012 Cumartesi 20:46

Yanıtlar

  • Merhabalar,
    kodlarınızı paylaşırsanız daha sağlıklı çözüm üretilebilir...
    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    20 Ağustos 2012 Pazartesi 14:52
  • Kodlarımın hepsini paylaşmam imkansız çunku bir sosyal paylaşım sitesi az bir kod değil ki buraya yazayım.

    2 defa tetiklenen sayfanın cs tarafını yazdım

     Sınıf d = new Sınıf();
        public string resim = "", adi = "";
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
            if (!IsPostBack)
            {
                if (Session["id"] != null)
                {
        
                    string[] str = Sınıf.UserInfo(RouteData.Values["adi"].ToString()).Split('|');
                    string idd = Session["id"].ToString();
                    resim = str[2];
                    adi = str[1];
                    string gorunumDurumu = (String)Sınıf.TekBirDegerALmak("[profil_gorunumu]",
                          new List<string> { "@bukisi", "@ben" },
                          new List<string> { str[0], idd });
                    if (gorunumDurumu.Equals("0"))
                    {
                        string yazılsınmı = (String)Sınıf.TekBirDegerALmak("[profile_Yazılsınmı]",
                             new List<string> { "@bukisi", "@ben" },
                             new List<string> { str[0], idd });
                        if (yazılsınmı.Equals("0"))
                            pnlPaylasım.Visible = true;
    
                        rptduvar.DataSource = d.PrametreliProcedur("[BENIMPAYLASIMLARIM]",
                            new List<string>() { "@id" },
                            new List<string>() { str[0] });
                        rptduvar.DataBind();
                    }
                    else
                    {
                        divuyarii.Visible = true;
                        lblGorunum.Text = str[1] + " Profil bilgilerini bakılmasına izin vermiyor";
                    }
                    rptArkadas.DataSource = d.PrametreliProcedur("[ARKADAS_BULMAK3TANE]",
                           new List<string> { "id" }, new List<string> { idd });
                    rptArkadas.DataBind();
                    imgProfilResmi.ImageUrl = str[2];
                    lblKisi.Text = str[1];
                }
            }
    
        }

    Arkadaşlar zaten bunu bitirmeden gidersem patron bana kapıyı göstericekdir :) gerçekden yardım ederseniz çok sevinirim.

    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    20 Ağustos 2012 Pazartesi 18:01
  • Benzer hata ile iki kez karşılaştım. Biri  dediğiniz gibi image urllerinin boş bırakılmış olması. Bir diğeri ise  projede Ajaxtoolkit 4.0 varken ben VS 2010 ile gelen ve freamwork 3.5 kullanan ScriptManageri kullandığım içindi. ScriptManageri ToolkitScriptManager ile değişince düzelmişti. Projene Global.asax dosyası ekleyerek Application_error eventi  içinde exceptionları yakalayarak dosya yüklenemedi gibi hatalar alıp almadığına bak. Bu eventin içine giriyorsa iki kez yüklenmesine sebep olan hatayı yakalayabilirsin.

    Çok sinir bozucu bir olay. çözmeden insanın devam edesi bile gelmiyor. Kolay Gelsin...

    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    22 Ağustos 2012 Çarşamba 14:09
  • Yok hayır, anladığım kadarıyla function'un sağına soluna birşey yazmanız gerekmiyor. Belki kodlarınız arasında bir problem vardır. İlk önce Javascript kodlarınıza erişiminiz sağlanıyormu onu kontrol edin. Google chrome bu konuda tam bir el çantası :) Ama yinede emin olmamız lazım acaba sıkıntı nereden ?

    Yapmamız gereken sırasıyla:

    İlk olarak gördüğümü söyleyim:

    return GeMesajBildirGoster(<%= Session["id"] %>) yerine

    return GeMesajBildirGoster('<%= Session["id"] %>') şeklinde deneyin. Yada acaba yazdığınız html tag sıkıntılımı. Kontrol için 

    return GeMesajBildirGoster(<%= Session["id"] %>) satırını kaldırarak yerine 

    alert("Deneme") yazmanız. Eğer deneme adında bir pencere fırlarsa karşınıza iyiye işaret. Eğer sıkıntı burada değilse:

    onclick eventinize: GeMesajBildirGoster() yazınız ve GeMesajBildirGoster functionunuzu şu şekilde değiştiriniz:

    function GeMesajBildirGoster(){alert("Deneme");} eğer buda çalışırsa demek ki javascript kodlarınız da hatanız var. Eğer yukarıdaki kod çalışırsa birde şöyle deneyin:

    function GeMesajBildirGoster(Mesaj){alert(Mesaj);} onclick eventin'a

    GeMesajBildirGoster('Deneme'); olarak deneyin. Eğer buda çalışırsa şu şekilde kontrol edin:

    return GeMesajBildirGoster(<%= Session["id"] %>) şeklinde kontrol edin. Eğer burada da sıkıntı yoksa bilin ki hata javascript kodlarınızda.

    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    23 Ağustos 2012 Perşembe 11:46

Tüm Yanıtlar

  • <a href='User/"+Eval("yol")+"'>
    şu şekilde değiştirip denermisin
    <a href='<%# Page.GetRouteUrl("user", new { adi= Eval("sqldeki ilgili kolon adını yaz")}) %>'>
    18 Ağustos 2012 Cumartesi 21:00
  • <a href='User/"+Eval("yol")+"'>
    şu şekilde değiştirip denermisin
    <a href='<%# Page.GetRouteUrl("user", new { adi= Eval("sqldeki ilgili kolon adını yaz")}) %>'>

    Faruk bey cevabınız için çok teşşekür ederim fakad page load yine 2 defa tetiklendi.

     Başka bir fikriniz varsa çok sevinirim.

    18 Ağustos 2012 Cumartesi 21:36
  • Merhabalar,
    kodlarınızı paylaşırsanız daha sağlıklı çözüm üretilebilir...
    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    20 Ağustos 2012 Pazartesi 14:52
  • Kodlarımın hepsini paylaşmam imkansız çunku bir sosyal paylaşım sitesi az bir kod değil ki buraya yazayım.

    2 defa tetiklenen sayfanın cs tarafını yazdım

     Sınıf d = new Sınıf();
        public string resim = "", adi = "";
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
            if (!IsPostBack)
            {
                if (Session["id"] != null)
                {
        
                    string[] str = Sınıf.UserInfo(RouteData.Values["adi"].ToString()).Split('|');
                    string idd = Session["id"].ToString();
                    resim = str[2];
                    adi = str[1];
                    string gorunumDurumu = (String)Sınıf.TekBirDegerALmak("[profil_gorunumu]",
                          new List<string> { "@bukisi", "@ben" },
                          new List<string> { str[0], idd });
                    if (gorunumDurumu.Equals("0"))
                    {
                        string yazılsınmı = (String)Sınıf.TekBirDegerALmak("[profile_Yazılsınmı]",
                             new List<string> { "@bukisi", "@ben" },
                             new List<string> { str[0], idd });
                        if (yazılsınmı.Equals("0"))
                            pnlPaylasım.Visible = true;
    
                        rptduvar.DataSource = d.PrametreliProcedur("[BENIMPAYLASIMLARIM]",
                            new List<string>() { "@id" },
                            new List<string>() { str[0] });
                        rptduvar.DataBind();
                    }
                    else
                    {
                        divuyarii.Visible = true;
                        lblGorunum.Text = str[1] + " Profil bilgilerini bakılmasına izin vermiyor";
                    }
                    rptArkadas.DataSource = d.PrametreliProcedur("[ARKADAS_BULMAK3TANE]",
                           new List<string> { "id" }, new List<string> { idd });
                    rptArkadas.DataBind();
                    imgProfilResmi.ImageUrl = str[2];
                    lblKisi.Text = str[1];
                }
            }
    
        }

    Arkadaşlar zaten bunu bitirmeden gidersem patron bana kapıyı göstericekdir :) gerçekden yardım ederseniz çok sevinirim.

    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    20 Ağustos 2012 Pazartesi 18:01
  • Yazmış olduğunuz kodların içerisinde dikkatimi çekip şundan dolayı diyemem, hepsi gayet normal gözüküyor sıkıntısız. Yani sayfanızı iki kez post edecek bir kod yok. Belki from elementinin action özelliği değişiyordur sayfa iki kez post oluyordur. Hatanızı sıkıştırarak gidin. Sayfadan mı yoksa yoksa yönlendirmenizden dolayımı anlarsınız: Şu şekilde yapın. Sayfanızda ki kodları satır satır kaldırın. Gerekirse bütün kodlarınızı kaldırın bakın eğer hala sayfa iki kez post oluyorsa (master page kullanıyorsanız orası da dahil) bu sefer routing yaptığınız kodlara dönün. Eğer sayfada hazır bir tool kullanıyorsanız ona da bakın. Hatta web config dosyanızı da kontrol edin. Zaten problemin neresi yaptığını göreceksiniz. Ama sakın unutmayın, bu işlemi yaparken kodlarınızı direk silmeyin. Silmek yerine // veya /*  */  kullanın. Mazallah elektrikler giderse Haliniz duman :)

    Kolay gelsin, Eğer hangi satır hatalıysa bulun bizlerle paylaşın elimizden geldiğince yardımcı olalım.

    22 Ağustos 2012 Çarşamba 06:52
  • Benzer hata ile iki kez karşılaştım. Biri  dediğiniz gibi image urllerinin boş bırakılmış olması. Bir diğeri ise  projede Ajaxtoolkit 4.0 varken ben VS 2010 ile gelen ve freamwork 3.5 kullanan ScriptManageri kullandığım içindi. ScriptManageri ToolkitScriptManager ile değişince düzelmişti. Projene Global.asax dosyası ekleyerek Application_error eventi  içinde exceptionları yakalayarak dosya yüklenemedi gibi hatalar alıp almadığına bak. Bu eventin içine giriyorsa iki kez yüklenmesine sebep olan hatayı yakalayabilirsin.

    Çok sinir bozucu bir olay. çözmeden insanın devam edesi bile gelmiyor. Kolay Gelsin...

    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    22 Ağustos 2012 Çarşamba 14:09
  • Cevaplarınız için öncelikle çok tşk. edr. sorunu yarım'da olsa çözdüm sorun kullanmadığım bir .css dosyasını sildiğimde page load 1 defa tetiklendi ama buseferde  routing kullandığım sayfada

    resimler gösterilmedi onların başına (/) Sılaş işaretini koyunca resimler eskisi gibi göründü fakad  en büyük sorun

      <span id="sgecmesaj" class="bildiri" onclick=" return GeMesajBildirGoster(<%= Session["id"] %>)">
                            <%=  GelenBildirimAdeti.Split('|')[3] == "0" ? "" : GelenBildirimAdeti.Split('|')[3]%></span>
    yukarıdaki span  tıkladığımda  GeMesajBildiriGoster() functionum hiç bir şekilde çalışmıyor normal sayfalarda çalışıyor  sanki yönlendirme yaptığım isimlerde böyle functionu arıyor gibi yada daha başka bir şey bu sorunu nasıl çözebilirim acaba  functionun sagına soluna bir şeymi yazmam gerekiyor değerli arkadaşlar ilgilenirseniz çok sevinirim.


    23 Ağustos 2012 Perşembe 10:52
  • Yok hayır, anladığım kadarıyla function'un sağına soluna birşey yazmanız gerekmiyor. Belki kodlarınız arasında bir problem vardır. İlk önce Javascript kodlarınıza erişiminiz sağlanıyormu onu kontrol edin. Google chrome bu konuda tam bir el çantası :) Ama yinede emin olmamız lazım acaba sıkıntı nereden ?

    Yapmamız gereken sırasıyla:

    İlk olarak gördüğümü söyleyim:

    return GeMesajBildirGoster(<%= Session["id"] %>) yerine

    return GeMesajBildirGoster('<%= Session["id"] %>') şeklinde deneyin. Yada acaba yazdığınız html tag sıkıntılımı. Kontrol için 

    return GeMesajBildirGoster(<%= Session["id"] %>) satırını kaldırarak yerine 

    alert("Deneme") yazmanız. Eğer deneme adında bir pencere fırlarsa karşınıza iyiye işaret. Eğer sıkıntı burada değilse:

    onclick eventinize: GeMesajBildirGoster() yazınız ve GeMesajBildirGoster functionunuzu şu şekilde değiştiriniz:

    function GeMesajBildirGoster(){alert("Deneme");} eğer buda çalışırsa demek ki javascript kodlarınız da hatanız var. Eğer yukarıdaki kod çalışırsa birde şöyle deneyin:

    function GeMesajBildirGoster(Mesaj){alert(Mesaj);} onclick eventin'a

    GeMesajBildirGoster('Deneme'); olarak deneyin. Eğer buda çalışırsa şu şekilde kontrol edin:

    return GeMesajBildirGoster(<%= Session["id"] %>) şeklinde kontrol edin. Eğer burada da sıkıntı yoksa bilin ki hata javascript kodlarınızda.

    • Yanıt Olarak İşaretleyen SALMANARSLAN 23 Ağustos 2012 Perşembe 12:03
    23 Ağustos 2012 Perşembe 11:46
  • Halit ÇOLAK

    Cevabınız için çok tşk edr fakad sorun benim gibi bilmeyene ne kadar zor gelsede aslına çözümü çok basitmiş

     <script src="Scripts/salmanarslan.js" type="text/javascript"></script> Eski Hali

     <script src="/Scripts/salmanarslan.js" type="text/javascript"></script>Yenş Hali

    birde

    ....

     url: "/WebService.asmx/DubeBildiriler",

    ....

    yani kısacsı hepsinin başına / işateti koymam gerekiyormuş

    img src boş ise ve kullanmadığınız bir .css ve .js import edilmişse onu kaldırın yukarıdaki gibi sılaş işatetlerini unutmayınız. Tekrardan ilgilenen bütün arkadaşlardan Allah razı olsun ...

    23 Ağustos 2012 Perşembe 12:00
  • Benim de size bahsettiğim konu tam olarak buydu. Bütün hataları kontrol etmeniz için uzun uzadıya yazmıştım :) Probleminiz giderilmiş kolay gelsin size :)
    23 Ağustos 2012 Perşembe 12:45