merhaba herkese,
Response.Redirect ile açmak istediğimiz sayfaya ait parametreler gönderebiliyormuyuz.
mesala window.open da oldugu gibi genişliği, statusbarı vs vs. en önemliside yeni bir tarayıcı* sayfasında açmak istiyorum.window.open malesef popup olarak açıyor :(
ben target=_blank yazmak istiyorum. response redirect bu işi yapamıyorsa bunu javascript le yapabilirmiyim popup olmayan yeni sayfa .
ne yapmalıyım?
Cevaplar
1. | Bu durumda Response.Redirect kullanmamalısınız. Bunun yerine çıktıya yeni sayfayı açacak olan Javascript kodunu yazabilirsiniz. Aşağıdaki örneği inceleyiniz:
<script runat=server>
public void btn_click(...) { Response.Write("<script>window.open('falanca.html')</script>"); } </script> ... <asp:button ... on_click="btn_click"/> Bu şekilde çıktıya yazdığınızda sayfanın en üstüne yazılır. (Test etmek için kaynağı görüntüleyin.) Script çalıştığında eski sayfanız yerinde durur, yeni pencerede falanca.html açılır. |
2. |
Response.Write("<script></script>")
sorun çıkartabiliyor, eğer sorun olursa şöyle yazın:
Response.Write("<scr"+"ipt></scr"+"ipt>")
|
3. | cevap için teşekkür ederim ama ben popup olmamasınıda istiyorum. sayfa popup engelleyiciye takılmasın istiyorum, çok şeymi istiyorum :( kullanııcılarımın çogu butona basıyorum bişi olmuyo diyo, popup engelleyicinin uyarısını anlamıyo bile |
4. | window.open'ı sadece tek parametre ile çalıştırırsanız "target=_blank" yapmış olursunuz zaten. Bunu bir deneyin.
window.open("falanca.html");
|
5. | ben sizi anlıyorumda sayın fizikçi ama kendimi anlatamıyorum sanırım. tm target=_blank oldu. yalnız bu yeni sayfa popup açılıyor. benim sıkıntım popup olmasında ayrıca :( |
6. | Eğer yanlış anlamadıysam, bir nevi lookup sayfası açmak istiyorsunuz. Server taraflı bu işi yapmaktansa, HTML buton kullnıp onClick olayında çağırsanız nasıl olur diye sormak istiyorum. Wesselam... |
7. | Şöyle bişey denedim oldu. Bu popup değil. (hem de target=_blank :)
<body onload="aydi.click()">
<a id=aydi href="http://www.bilisim-kulubu.com" target="_blank">Falanca</a> </body> Tabi çok saçma bir attraksiyon oldu bu. Sırf window.open'ı kullanmamak için böyle bir şey yazdım. Mennan'ın da dediği gibi probleminizi başka bir şekilde çözmeye çalışsanız daha iyi olur. (Bazen biz programcılar bir çözüm yöntemine takılır ısrarla o yöntemi deneriz. Bu gibi durumlarda iki dakka dışarı çıkıp hava almak, biraz dinlenip öyle devam etmek çok faydalı oluyor. Problemi daha iyi teşhis edip, daha güzel çözüm geliştirebiliyorsunuz.) |
8. | private void devamBtn_Click(object sender, System.EventArgs e) { seviye=seviyeDDL.SelectedValue; ilce=ilceDDL.SelectedValue; okul=okulDDL.SelectedValue; string script= "<scr"+"ipt> " ; if (listeDDL.SelectedValue=="ilcebasari") script+="window.open('ilcebasari.aspx?seviyeID="+seviye+"&ilceID=0&okulID=0')"; else if (listeDDL.SelectedValue=="ilk100" & ilce=="0" ) script+="window.open('liste.aspx?seviyeID="+seviye+"&ilceID=0&okulID=0&ilk100=1')"; script+= "</scr"+"ipt>"; Response.Write(script); } bu butonun click olayı, şimdi ben anlamadım ki bu butonu html buton yapsam nereye yazacam a tag ını ve a nın href degerini :( yoruldum galiba, kardeşim benim sitemde dolanmak istiyosanız popup engelleyiciyi kaldırcaksınız diyesim geliyo ama diyemiyorum, müşteri veli nimetimizdir nitekim. :D |
9. | :) Server tarafında yapmayalım bu işi. Şöyle yapalım :
<button onclick="devamEt()">Devam</button>
<script> function devamEt() { seviye = seviyeDDL.value; ilce = ilceDDL.value; okul = okulDDL.value; window.open('liste.aspx?seviyeID='+seviye+'&ilceID='+ilce+'&okulID='+okul); // artık nasılsa... } </script> Burada servera gidip gelmeden (postback yapmadan) butona tıklanınca popup'ımızı açıyoruz. Pekala popup yapmak istemezsek ne yapacağız? Öncelikle popup nedir? Popup, Javascript ile açılan browser penceresine denir. Madem öyledir başka pencerede açmak istiyorsanız popup'dan kurtuluş çaresi yoktur. Sadece <a href="..." target=_blank></a> gibi bir linke kullanıcı tıklarsa Javascript kullanılmamış oluyor, popup blockerlar bunu görmezden geliyor. Ama bunu nasıl yapacağız? Şöyle birşey yapmak mümkün: Bir tane <a id=devamLink href="degisecek">DEVAM</a> şeklinde link tanımlarız (yazarız). Sonra combo'lardan değer seçildikçe bu link'in href'ini değiştiririz. Aşağıdaki gibi:
<select id=seviyeDDL onchange="changeDevamLink()">
<option value=1>Seviye 1</option> <option value=2>Seviye 2</option> </select> <select id=okulDDL onchange="changeDevamLink()"> <option value=1>Okul 1</option> <option value=2>Okul 2</option> </select> <select id=ilceDDL onchange="changeDevamLink()"> <option value=1>İlçe 1</option> <option value=2>İlçe 2</option> </select> <a id=devamLink href="degisecek" class="butonGibi">DEVAM</a> <script> function changeDevamLink() { seviye = seviyeDDL.value; ilce = ilceDDL.value; okul = okulDDL.value; devamLink.href = 'liste.aspx?seviyeID='+seviye+'&ilceID='+ilce+'&okulID='+okul); // artık nasılsa... } </script> |
10. | Bir diğer yöntem ise şudur:
<form action="liste.aspx" target="_blank" method="GET">
<select id=seviyeDDL> <option value=1>Seviye 1</option> <option value=2>Seviye 2</option> </select> <select id=okulDDL> <option value=1>Okul 1</option> <option value=2>Okul 2</option> </select> <select id=ilceDDL> <option value=1>İlçe 1</option> <option value=2>İlçe 2</option> </select> <input type=submit value="DEVAM"> </form> Form'un target'ına dikkat. Method'un GET ya da POST olması tercih meselesi. Tabi bunları ASP.NET ortamında yapmak zor olabilir. Üzebilir programcıyı. Biz de boşuna PHP'yi savunmuyoruz zaten. :) PHP gibi script dilleri, -ASP.NET, JSP gibi- derlenen, ultra high technology dilleri rahatlıkla dövebiliyor. Neden? Çünkü basit, esnek, bütün kontrolü programcıya veriyor. Eğer programcı HTML ve Javascript biliyorsa istediğini yapabiliyor. |
11. | yarın deneyecegim son 2 öneriyi, teşekkürler fizikçi, teşkkürler mennan |
12. |
function FormOnay()
{ seviye=document.Form1.seviyeDDL.value; ilce=Form1.ilceDDL.value; okul=Form1.okulDDL.value; if (Form1.listeDDL.value=="ilcebasari" ) action="ilcebasari.aspx?seviyeID="+seviye+"&ilceID=0&okulID=0"; else action=Form1.listeDDL.value+".aspx?seviyeID="+seviye+"&ilceID="+ ilce+"&okulID="+ okul+""; alert(Form1.action); Form1.target="_blank"; Form1.submit(); } ... ...
<INPUT id="devamBtn" onClick="return FormOnay();" type="button" value="Devam">
böyle herşey tm. Yalnız bu action olayından sonra bu sayfa üzerinde herhangi bir işlemde servera bir gönderme yapıldıgında action ile yapılmış son aksiyon tekrar yapılıyor :( bi çözümü olabilir mi ki? ben baya düşündüm ama |
13. | bu arada form submitle açmaya çalıştıgınız yeni sayfa için şöyle bir hata alabilrisiniz.
The viewstate is invalid for this page and might be corrupted.
ozaman yapmanız gereken açılacak yeni sayfanın üst tanımlama kısmına enableViewStateMac="False" eklemek. document özelliklerinde enableViewStateMac varsayılan olarak false gelmesine ragmen, tanımlama kısmında yazmıyor. siz tanımlama kısmına yazmalısınız. tanımlama kısmı derken nerden bahsediyorum ama di mi, buna da açıklık getirmek lazım :D
<%@ Page language="c#" Codebehind="liste.aspx.cs" AutoEventWireup="false" Inherits="ILSTS.liste" enableViewStateMac="False"%>
|