2010-03-31 50 views
0

我目前正在使用VB在ASP.NET中的Web應用程序。使用POST或SESSION捕獲數據

現在我有1頁面板,我們正在使用顯示/隱藏取決於流量。當用戶第一次進來時,他/她會看到一個包含客戶列表的gridview。然後,用戶點擊一行中的鏈接並呈現他/她可以更新客戶信息的表單。

本來我有一個HyperLinkField字段即把ClientID的url中,那麼我會抓住網址,並做適當的代碼

<asp:HyperLinkField Text='<%$ Resources:Resource, ManageClient %>' DataNavigateUrlFields="CLIENT_ID" DataNavigateUrlFormatString="~/clients/manage.aspx?clientId={0}" /> 

現在,我重新思考的是,不知道它是否是更好地使用會話通過這個代替

<asp:TemplateField Visible="false"><ItemTemplate><asp:Label runat="server" ID="hidClientId" Text='<%# Bind("CLIENT_ID")%>' Visible="false" /></ItemTemplate></asp:TemplateField> 
<asp:ButtonField Text='<%$ Resources:Resource, ManageClient %>' CommandName="Manage" /> 

搶clientID的或者使用POST方法,這我不知道它是如何工作的。NET(但我在PHP中使用它)

任何^ h艾爾普將不勝感激。

+0

數據發回到同一頁面,還是要到不同的頁面? – tloflin 2010-03-31 14:52:12

+0

相同的頁面...我使用1頁面板來顯示/隱藏所需的部分(gridiew,窗體等...) – Karinne 2010-03-31 15:20:30

回答

1

我認爲你應該使用querystrings是誠實的(如在你的第一個例子)。主要原因是這將允許後退/前進/刷新按鈕正常工作。

如果您使用post或postback類型的方法,則會遇到用戶可以點擊刷新並獲取令人討厭的表單重新提交消息的情況。有時候表單帖子是有道理的,但我不認爲發送一個小的參數就是其中之一。

現在,如果你仍然想要一個記憶狀態的會話的功能,那麼你仍然可以用querystrings來做到這一點。只需將查詢字符串傳遞給頁面,將會話設置爲查詢字符串值。下次頁面沒有查詢字符串時,編寫代碼來檢查它是否具有會話值並使用它。

例如

Dim iClientID As Integer 

    If IsNumeric(Request.QueryString("ClientID")) Then 
     iClientID = CInt(Request.QueryString("ClientID")) 
     Session("ClientID") = iClientID 
    ElseIf IsNumeric(Session("ClientID")) Then 
     iClientID = CInt(Session("ClientID")) 
    End If 
+0

謝謝你的觀點史蒂夫。我沒有想到那種「刷新」的噩夢;)就像我對英國開發者說的那樣,數據並不敏感,所以這不是一個大問題。我主要是確保我以正確的方式做到這一點。謝謝! – Karinne 2010-03-31 17:01:50

1

我寧願使用querystrings。取決於這些數據是否敏感。如果它很敏感,我會使用會話,因爲跨頁面發佈是一場噩夢。

+0

數據不是「真正」敏感...... ClientID只是一個由ID提供的ID DB。這就像社會保險號碼(SIN)。謝謝! – Karinne 2010-03-31 16:59:05