2010-08-24 26 views
1

a)在Asp.Net中,我們可以通過Page.IsPostBack屬性檢查請求是否是回傳請求。但是此屬性從何處獲取其值?因此,瀏覽器在傳入請求中放置了哪個值?即使...

b)據我所知,點擊重載按鈕也會導致瀏覽器發送表單數據回服務器。因此,是否正在按下瀏覽器的reload按鈕,與按下submit按鈕(它嵌套在FORM元素中)相同?

c)假設瀏覽器顯示A.aspx對於拳頭時間,並假設用戶點擊瀏覽器的reload按鈕,然後我認爲該請求將被認爲是由Asp.Net(特別是因爲瀏覽器也發送回任何form data)回傳,但不是。爲什麼?

感謝名單

回答

4

IsPostBack屬性只查看是否提出的請求是POST請求的動作。如果它是POST,則IsPostBack返回true。

在瀏覽器上打開重新加載/刷新通常不會向服務器發送任何表單數據 - 大多數情況下這會導致GET請求(這是您首次訪問網站時發送的默認請求)。

如果您單擊由於POST操作而收到的頁面上的刷新,那麼瀏覽器會詢問用戶是否想在再次執行POST請求之前再次提交數據。瀏覽器不會重新提交任何表單數據,除非用戶確認(至少這是它在IE,Firefox和Chrome中的工作原理)。

提琴手是一個偉大的工具來幫助這種情況。它位於瀏覽器和服務器之間的中間,你可以看到所有的流量來回。你可以下載它here

+0

1 - 「IsPostBack屬性只查看請求是否爲POST請求操作,如果是POST,則IsPostBack返回true。」那麼第一個請求就無法成爲POST請求了? 2 - 「在瀏覽器上重新加載/刷新通常不會向服務器發送任何表單數據」 如果A.aspx包含TextBox控件,並且在第一頁加載用戶在文本框中輸入一些文本並單擊瀏覽器的重新加載按鈕,那麼當頁面重新加載時,輸入的文本用戶仍然存在。如果表單數據沒有發送到服務器,那麼爲什麼瀏覽器在重新加載時顯示文本? – flockofcode 2010-08-24 18:34:45

+1

根據定義,頁面的第一個請求應該不是POST請求,因爲POST應該發送用戶輸入的數據。我認爲你的第二個問題是由於瀏覽器在重新加載時通過自動輸入他們輸入到文本框中的文本來幫助用戶。 你可以看到小提琴手到底發生了什麼。我會修改我的答案,以包含此驚人工具的鏈接。 – davisoa 2010-08-24 19:13:59

+0

感謝您的幫助 – flockofcode 2010-08-26 19:08:33