15 Ocak 2009

Response.Redirect() ile Yönlendirilecek Sayfayı Yeni Pencerede Açmak

Bundan 3-4 yıl kadar önce sunucu tarafında yapacağım sayfa yönlendirmesini yeni sayfada açma işlemini gerçekleştirmek için bir hayli araştırma yapmış ama sonucuna ulaşamamıştım. Aslında o kadar da zor değilmiş! Bazı durumlarda code-behind tarafında yazacağımız kodların içerisinde Response.Redirect metodunu kullanarak belirli bir sayfaya yönlendirme yapabiliyoruz. Peki bu yönlendirme işleminde açılacak olan sayfanın, yeni bir tarayıcı penceresinde görüntülenmesini nasıl sağlarız? Aslında bu sorunun cevabının Response.Redirect metoduyla hiçbir ilgisi yok. Olay tamamen bu metodu tetikleyen kontrol üzerinde yapılacak bir işlemle çözülebiliyor. Örneğin yönlendirmeyi Button kontrolü gerçekleştirecek ise aşağıdaki kodlar işimizi görecektir. Bu arada butonun form1 adındaki form elementi içerisinde yer alması gerektiğini söylememe gerek yoktur sanırım :)

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Tıkla Bakalım" OnClientClick="form1.target='_blank';" />

Button'ın Click olay metoduna standart Redirect metodumuzu yazmak yeterli olacaktır.

protected void Button1_Click(object sender, EventArgs e)

{

    Response.Redirect("Default.aspx");

}

Peki işleyiş nasıl? Button içerisinde eklediğimiz ve client tarafında çalışan form1.target='_blank' ifadesi butona tıklandığında işleyişi yeni bir pencereye devrediyor. Dolayısıyla açılan yeni pencere üzerinde sayfa postback oluyor ve Default.aspx sayfasına yönlendirme yapılıyor.

Hiç yorum yok: