Bu fonksiyonu daha iyi anlamak için sıra sıra gidelim. İki adet web server kontrolü ekleyelim (Button ve ImageButton dışında) ve arka tarafta ne olup bittiğine göz atalım.
[code lang="js"]
///ASPX
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Text="LinkButton" />
///Code behind
protected void LinkButton1_Click(object sender, EventArgs e) { }
[/code]
Sayfayı çalıştırıp sayfa kaynağına baktığımızda aşağıdaki kodları göreceğiz :
[code lang="js"]
///JavaScript
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
///HTML
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
[/code]
Görüldüğü gibi __dopostback fonksiyon iki argüman alıyor. eventTarget ve eventArgument. Bununla beraber iki adette hidden field eklenmiş. 'eventTarget' ve' eventArgument' değerlerini saklamak için kullanılan “__EVENTTARGET” ve “__EVENTARGUMENT,” sırasıyla deklare edilir. LinkButton'a tıklandığında __dopostback javascript fonksiyonu argümanları sırayla çağırır ve gönderir. Bu durumda eventTarget LinkButton1 ve eventArgument boştur. Bu değerler hidden field kontrollerinde saklanır. Form gönderildiği veya tetiklendiğinde parametre koleksiyonu forma eklenir. Server tarafında ASP.NET hangi kontrolün postback olayına neden olduğunu anlar ve form koleksiyonundan gelen değerleri alır ve kullanır. Daha iyi anlamak için biraz daha kolay açıklayalım. Farklı bir kontol ekliyoruz ve LinkButton2 adıyla isimlendiriyoruz.
[code lang="js"]
<asp:Button ID="Button1" runat="server" Text="browser gönderimini kullanır" UseSubmitBehavior="true" />
<asp:Button ID="Button2" runat="server" Text="asp.net postback mekanizmasını kullanır" UseSubmitBehavior="false" />
[/code]
Dikkat edin başlangıçta UseSubmitBehavior="true" ifadesi yok veya defaul olarak gelmiyor. Daha iyi anlaşılması için ben ekledim. Şimdi sayfayı çalıştırıp, sayfa kaynağını kontrol edelim. Sonuç aşağıdaki gibi olacaktır.
[code lang="js"]
<input type="submit" name="Button1" value="browser gönderimini kullanır" id="Button1" />
<input type="button" name="Button2" value="asp.net postback mekanizmasını kullanır" onclick="javascript:__doPostBack('Button2','')" id="Button2" />
[/code]
Button2 de UseSubmitBehavio özelliğini false olarak işaretlediğimiz için formu göndermek için __doPostBack fonksiyonunu kullanacaktır.
Kolay Gelsin
Hiç yorum yok:
Yorum Gönder