Asp.NET'te f5 ile formun tekrar post edilmesi sorunu

scapegoat

Öğrenci
Katılım
25 Ağustos 2011
Mesajlar
8
Reaksiyon puanı
0
Puanları
0
arkadaşlar asp.net ile çalışıyorum ve devamlı karşılaştığım bir sorun var. buton vasıtasıyla form içerisinden veritabanına veri kaydediyorum ve aynı sayfadaki bir label'a "veri başarıyla kaydedildi" benzeri bir ifade yazarak kullanıcıya geribildirim veriyorum. ancak şöyle bir sıkıntı oluyor. kullanıcı veriyi kaydettikten sonra aynı sayfada f5 ile sayfayı yenileyince aynı veriler tekrar kaydediliyor. bunu engellemek için kullanıcıyı kayıt işleminden sonra farklı bir sayfaya yönlendirerek bu sorun halledilebilir ancak ben farklı bir sayfaya yönlendirme yapmak istemiyorum. veritabanındaki tabloda unique ID kolonu oluşturulup kayıt işlemi esnasında bu kontrol ettirilerek de bu sorun halledilebilir. ancak yine sunucuyu kasacak bir yöntem. bunların dışında farklı bir yöntem bilen var mı? formda saklanan verileri sıfırlamak gibi? :confused1: viewstate'ten mi kaynaklanıyor acaba diye düşündüm devredışı bıraktım ama yine yemedi. yardımlarınızı bekliyorum :)
 

scapegoat

Öğrenci
Katılım
25 Ağustos 2011
Mesajlar
8
Reaksiyon puanı
0
Puanları
0
sorunu bu şekilde çözdüm.:cool:

Kod:
    protected void Page_Load(object sender, EventArgs e)[INDENT]{[/INDENT]
[INDENT=2]if (!IsPostBack)
{[/INDENT]
[INDENT=3]Session["PostID"] = "1234";
ViewState["PostID"] = Session["PostID"].ToString();[/INDENT]
[INDENT=2]}[/INDENT]
[INDENT]}[/INDENT]


public bool IsValidPost()
{[INDENT]if (ViewState["PostID"].ToString() == Session["PostID"].ToString())[/INDENT]
[INDENT]{[/INDENT]
[INDENT=2]Session["PostID"] = (Convert.ToInt32(Session["PostID"]) + 1).ToString();[/INDENT]
[INDENT=2]ViewState["PostID"] = Session["PostID"].ToString();[/INDENT]
[INDENT=2]return true;[/INDENT]
[INDENT]}[/INDENT]
[INDENT]else[/INDENT]
[INDENT]{[/INDENT]
[INDENT=2]ViewState["PostID"] = Session["PostID"].ToString();[/INDENT]
[INDENT=2]return false;[/INDENT]
[INDENT]}[/INDENT]
}

protected void btnGonder_Click(object sender, EventArgs e)
{

        if (IsValidPost())
        {[INDENT=2]//post işlemleri...[/INDENT]
[INDENT]}[/INDENT]
}
 
Üst