En iyi yanıtlayıcılar
Sayfa 2 defa tetikleniyor

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.
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
-
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
-
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
-
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
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")}) %>'>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.
-
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
-
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
-
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.
-
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
-
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.
-
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
-
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 ...
-