2010-03-31 46 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