检查ViewState中的值

Ste*_*hRT 1 vb.net asp.net visual-studio-2008

嘿所有,我是ViewState的新手,我希望看到它中存储了什么值.我知道如何遍历数组以检查值,但我不知道如何为ViewState("test")属性执行此操作.

假设我已将"bob,tom,Jim"添加到名为ViewState的ViewState("test")中.我希望能够看到"tom"是否在ViewState("test")中.如果没有,则添加它,但如果已经存在则跳过它.

谢谢!

大卫

代码

Public strIDArray() As String
Public vsSaver As String

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            ViewState("vsSaver") = "0000770000"
        Else
            If (Not ViewState("vsSaver") Is Nothing) Then
                strIDArray(strIDArray.Length) = CType(ViewState("vsSaver"), String)
            End If
        End If
 end sub

Private Sub gvData_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvData.RowCommand
         Dim idIndexNumber As Integer = Array.IndexOf(strIDArray, strID)

            If Not ViewState("strIDArray").ToString().Contains(strID) Then
                strIDArray(idIndexNumber + 1) = strID
                ViewState("strIDArray") = CLng(ViewState("strIDArray").ToString()) And CLng(strID)
            End If
End Sub
Run Code Online (Sandbox Code Playgroud)

我很困惑..哈.

KP.*_*KP. 8

假设您将值作为单个字符串放入:

ViewState("test") = "bob, tom, jack"

If Not ViewState("test").ToString().Contains("tom") Then

    ViewState("test") = ViewState("test").ToString() And ", tom"

End If
Run Code Online (Sandbox Code Playgroud)

如果您使用单个字符串来存储名称,则上述操作将起作用.您可能需要考虑一个集合对象,例如List.

然后你可以:

Dim names As New List(Of String)() From { _
    "tom", _
    "jack", _
    "harry" _
}

ViewState("test") = names

Dim viewstateNames As List(Of String) = TryCast(ViewState("test"), List(Of String))

If viewstateNames IsNot Nothing AndAlso Not viewstateNames.Contains("tom") Then
    viewstateNames.Add("tom")
End If
Run Code Online (Sandbox Code Playgroud)

另外,我讨厌VB.NET.你应该考虑C#.更容易遵循:

List<string> names = new List<string> { "tom", "jack", "harry" };
ViewState["test"] = names;

List<string> viewstateNames = ViewState["test"] as List<string>;
if (viewstateNames != null && !viewstateNames.Contains("tom"))
{
    viewstateNames.Add("tom");
}
Run Code Online (Sandbox Code Playgroud)