我目前正在使用ASP.NET中的VB进行Web应用程序。
现在我有1页面板,我们用它来显示/隐藏,具体取决于流程。当用户第一次进入时,他/她被呈现包含客户列表的网格视图。然后,用户单击一行中的链接,并显示一个表单,他/她可以更新客户的信息。
最初,我有一个HYPERLINKFIELD将clientId放在url中,然后我抓住了url并正确地执行了代码
<asp:HyperLinkField Text='<%$ Resources:Resource, ManageClient %>' DataNavigateUrlFields="CLIENT_ID" DataNavigateUrlFormatString="~/clients/manage.aspx?clientId={0}" />
现在,我正在重新考虑这一点,并想知道是否最好使用SESSION来通过此方式获取clientID
<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" />
或者使用POST方法,我不确定它在.NET中是如何工作的(但我在PHP中使用过它)
非常感谢任何帮助。
答案 0 :(得分:1)
我也更喜欢使用查询字符串。取决于此数据是否敏感。如果它是敏感的,我会使用会话,因为跨页面发布是一场噩梦。
答案 1 :(得分:1)
我认为你应该使用查询字符串来说实话(如你的第一个例子)。主要原因是这将允许后退/前进/刷新按钮正常工作。
如果您使用post或postback类型的方法,那么您将遇到用户可以点击刷新并获得令人讨厌的表单重新提交消息的情况。有时候表格帖子有意义,但我不认为发送一个小参数就是其中之一。
现在,如果您仍然需要会话的功能,它会记住状态,那么您仍然可以使用查询字符串执行此操作。只需将查询字符串传递给页面,将会话设置为查询字符串值即可。下次页面出现时没有查询字符串,编写代码,检查它是否有会话值并改为使用它。
e.g。
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