Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > C# & ASP.NET
  Aktif Konular Aktif Konular RSS: ReWritePath Yaparken Form Action Özelliğinide Deği
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

ReWritePath Yaparken Form Action Özelliğinide Deği

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
turknetyazilim Açılır Menü Göster
Moderator Group
Moderator Group
Simge

Kayıt Tarihi: 18.Ocak.2008
Bulundugu Yer: Balıkesir
Online: Sitede Değil
Gönderilenler: 214
  Alıntı turknetyazilim Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: ReWritePath Yaparken Form Action Özelliğinide Deği
    Gönderim Zamanı: 20.Haziran.2010 Saat 16:13

Herkese merhabalar;

Uzun zamandır düşünüyordum.Nasıl çözerim diye biraz kafa yorduktan sonra çözdüm.
Şimdi Problem nedir?

Hepiniz  veriTabanı kullanıp ReWritePath yapmışsınız sitelerinizde fakat bazı sorunlar var. Bunlardan bir Taneside post sorunudur.

Yani siz  Tablodan başlıkları ve Kimlik numaralarını çekip  yeni bir URL oluşturduğunuzda ve bu URL ye göre de Global.asax dosyasındada Context.ReWritePath() methodunu kullanarakda sayfayı bastırıyorsunuz..
Ama şöyle bir absürt durum meydana geliyor.
diyelim ki bir masterpage ekliniz ve buna bağlı iki tane sayfa eklediniz.Default.aspx  ve detay.aspx diye neyse default.aspx de bir linkiniz var diyelim (Tıkladığınızda VeriTabanından delphi makalelerini getiriyor)
http:\\deneme.com\delphi-makaleri\1.aspx Global.asax dosyasındada
Context.ReWritePath("~/makaleler/detay.aspx","","KategoriNo=1",true); diye bu şekilde yazdırıyorsunuz.
Buraya kadar herşey normal;

Daha sonra geliyorsunuz.Makaleler klasöründeki detay.aspx sayfasına bir tane buton ekliyorsunuz ve çalıştırıp tıkladığınızda zamzurt bir yol çıkıyor URL de ...ve uygulamamı çakıyor ne yazıkki;
Sorun şu URL değişiyor ama masterpagedeki html form nesnesinin action özelliği değişmiyor.Yani otomatik olarak URL deki bilgiyi alamıyor.Bu yüzden kaynaklanıyor hata.
URLde ki bilgi değilde şöyle bir yol yazıyor mesela(bunu html kod çıktısından görebilirsiniz)


action="~/makaleler/detay.aspx?KategoriNo=1"
bizde bu masterpagedeki form nesnesinin action özelliğine URL deki değeri yazdırdıkmıydı sorun çözülecektir.Muhakkak faklı yöntemler vardır ama ben bunu MasterPage sayfanın CodeBehind tarafında aşağıki gibi bir method yazarak hallettim.

protected void FormActionDegistir()
{
   HtmlForm HtmlFormNesnesi=new HtmlForm(); // Yeni bir form nesnesi oluşturuldu.
   HtmlFormNesnesi=this.FindControl("form1") as HtmlForm;  form1 nesnesini bul ve Referans değişkene ata
   HtmlFormNesnesi.action=Request.RawURL.ToString(); // URL  action özelliğine aktarılıyor.
   HtmlFormNesnesi.Dispose(); // Hadi Defol senle işim bitti :) 
}

 Daha sonra bu methodu masterpage sayfanın page load olayında çağıma işi kalıyor.
şu şekilde

 if (!page.ispostback)  { this.FormActionDegistir(); }

 
 
 
 
 
 
========================================================

        protected void ChangeFormAction()

        {

            /*1. Yöntem */

            HtmlForm formNesnesi = new HtmlForm();

            formNesnesi = this.FindControl("form1") as HtmlForm;

            formNesnesi.Action = Request.RawUrl.ToString();

            formNesnesi.Dispose();

        }

 

 

        protected void ChangeFormAction()

        {

            /*2. Yöntem */

            this.Page.Form.Action = Request.RawUrl.ToString();

        }

 

 

 

       /*Page_Load yordamında Methodun çağrılması */

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!Page.IsPostBack)

            {

                this.ChangeFormAction();

            }

        }

Bu Kod İsmail Kocacan tarafından geliştirilmiştir.Alıntı Değildir.
Herkese Çalışmalarında Başarılar Dilerim


Düzenleyen turknetyazilim - 20.Haziran.2010 Saat 16:15
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,270 Saniyede Yüklendi. [power by : WebWiz]