Müdavim Girişi

E-Posta
Parola

Ücretsiz Kayıt Ol


Online Müdavimler (0 Kişi)
  • Online Kişi Bulunmadı

Yazar Hakkında
x
İsmail Kocacan
İsmail Kocacan is experienced on many development platforms and continues to learn technologies. Since the age of 16-17, dealing with software technologies. And continuous learning, teaching, research, continues to develop.
ReWritePath Yaparken Form Action Özelliğinide Değiştirmek

Herkese merhabalar;

Uzun zamandir düsünüyordum.Nasil çözerim diye biraz kafa yorduktan sonra çözdüm.
Simdi Problem nedir?
Hepiniz  veriTabani kullanip ReWritePath yapmissiniz sitelerinizde fakat bazi sorunlar var. Bunlardan bir Taneside post sorunudur.
 
Yani siz  Tablodan basliklari ve Kimlik numaralarini çekip  yeni bir URL olusturdugunuzda ve bu URL ye göre de Global.asax dosyasindada Context.ReWritePath() methodunu kullanarakda sayfayi bastiriyorsunuz..
Ama söyle bir absürt durum meydana geliyor.
diyelim ki bir masterpage ekliniz ve buna bagli iki tane sayfa eklediniz.Default.aspx  ve detay.aspx diye neyse default.aspx de bir linkiniz var diyelim (Tikladiginizda VeriTabanindan delphi makalelerini getiriyor)
http:\\deneme.com\delphi-makaleri\1.aspx Global.asax dosyasindada
Context.ReWritePath("~/makaleler/detay.aspx","","KategoriNo=1",true); diye bu sekilde yazdiriyorsunuz.
Buraya kadar hersey normal;

Daha sonra geliyorsunuz.Makaleler klasöründeki detay.aspx sayfasina bir tane buton ekliyorsunuz ve çalistirip tikladiginizda zamzurt bir yol çikiyor URL de ...ve uygulamami çakiyor ne yazikki;
Sorun su URL degisiyor ama masterpagedeki html form nesnesinin action özelligi degismiyor.Yani otomatik olarak URL deki bilgiyi alamiyor.Bu yüzden kaynaklaniyor hata.
URLde ki bilgi degilde söyle bir yol yaziyor mesela(bunu html kod çiktisindan görebilirsiniz)

action="~/makaleler/detay.aspx?KategoriNo=1"
bizde bu masterpagedeki form nesnesinin action özelligine URL deki degeri yazdirdikmiydi sorun çözülecektir.Muhakkak fakli yöntemler vardir ama ben bunu MasterPage sayfanin CodeBehind tarafinda asagiki gibi bir method yazarak hallettim.
protected void FormActionDegistir()
{
   HtmlForm HtmlFormNesnesi=new HtmlForm(); // Yeni bir form nesnesi olusturuldu.
   HtmlFormNesnesi=this.FindControl("form1") as HtmlForm;  form1 nesnesini bul ve Referans degiskene ata
   HtmlFormNesnesi.action=Request.RawURL.ToString(); // URL  action özelligine aktariliyor.
   HtmlFormNesnesi.Dispose(); // Hadi Defol senle isim bitti :) 
}
 Daha sonra bu methodu masterpage sayfanin page load olayinda çagima isi kaliyor.
su sekilde
 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 yordaminda Methodun çagrilmasi */
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.ChangeFormAction();
            }
        }
Alinti Degildir.
Herkese Çalismalarinda Basarilar Dilerim

Kategori : Asp.Net | 16.09.2010 19:18:00  | 2220 defa okundu  | 0 Yorum |

Yazara Ait Diğer Makaleler(51) Makaleye Yapılan Yorumlar İlk yorum yazan siz olun
Ara
 
Anket
Hangi VeriTabanı Yönetim Sistemini Kullanıyorsunuz ?