【问题标题】:Removing Selected Session items (VB ASP.NET)删除选定的会话项 (VB ASP.NET)
【发布时间】:2011-10-25 15:46:01
【问题描述】:

我正在做一些需要举行各种会话数据的事情。

我需要能够从会话中删除某些数据,但不能完全清除。

显然,我可以手动删除会话项

Session.Remove("itemName")

我的问题是,是否可以为所有会话变量设置前缀,然后删除所有具有该前缀的变量?

useData = session("snippet_theData")

然后是一些事情

Session.Remove("snippet_*")

...而不必手动单独删除每个项目。

【问题讨论】:

    标签: asp.net vb.net session


    【解决方案1】:

    最直接的方法是遍历会话集合并使用简单的字符串匹配 (string.StartsWith) 或正则表达式(如果您的 ID 真的像 snippet_ 一样简单,那就太夸张了),或者使用 @ 987654323@ 删除该项目,或将其值设置为 null 或空字符串。

    【讨论】:

      【解决方案2】:

      谢谢大家...恐怕上面的方法不太有效,我正在使用 VB,从我得到的错误来看,在我看来,上面的方法可以在 C# 中工作,但在 VB 中失败了.

      不管怎样,你指出了我正确的方向,我现在有了这个:

          Dim Key As String
          Dim prefix As String = "prefix_"
          Dim deleteKeyArray As Array
          Dim i As Integer
          Dim deleteKeys As String
      
          For Each Key In Session.Keys
              If Key.StartsWith(prefix) Then _
                  deleteKeys = Key & "," & deleteKeys
          Next
      
          deleteKeyArray = Split(deleteKeys, ",")
          For i = 0 To UBound(deleteKeyArray)
              Session.Remove(deleteKeyArray(i))
          Next
      

      似乎完成了这项工作。

      【讨论】:

        【解决方案3】:

        类似这样的:

         Const prefix = "snippet_"
         Dim prefixKeys = (From sessionKey In Session.Keys
                           Let name = CStr(sessionKey)
                          Where name.StartsWith(prefix)).ToList
         If prefixKeys.Any Then
             For Each key In prefixKeys
                 Session.Remove(key.name)
             Next
         End If
        

        注意:ToList() 是必需的,因为您不能在迭代期间将其从 Session 中删除,否则(延迟执行)。

        【讨论】:

          【解决方案4】:

          您可以做的一件事是使用 linq 获取您想要的所有密钥(您必须原谅我的 vb.net,因为我主要使用 c# 编写代码):

          Dim myKeys = Session.Keys.Cast(Of String).Where(Function(k) k.StartsWith("snippet")).ToArray()
          

          【讨论】:

            猜你喜欢
            • 2010-09-20
            • 2012-08-12
            • 1970-01-01
            • 2012-02-16
            • 1970-01-01
            • 2017-03-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多