HttpSessionState.GetEnumerator 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回可用來讀取目前工作階段中所有工作階段狀態變數名稱的列舉值。
public:
virtual System::Collections::IEnumerator ^ GetEnumerator();
public System.Collections.IEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Function GetEnumerator () As IEnumerator
傳回
IEnumerator,可逐一查看工作階段狀態集合中的變數名稱。
實作
範例
下列範例示範如何使用 方法,將值儲存在會話狀態 Add 中。 它也會示範如何使用 方法來移除會話狀態 Remove 中的值。 控件 Repeater 可用來在網頁上顯示會話狀態的內容。 方法 GetEnumerator 可用來逐一查看會話狀態集合並填入 Repeater 控件。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
// If both name and value are specified
// use the Add method to add the item to session-state.
if (!String.IsNullOrEmpty(TextBox1.Text) &
!String.IsNullOrEmpty(TextBox2.Text))
{
string itemName = Server.HtmlEncode(TextBox1.Text);
string itemValue = Server.HtmlEncode(TextBox2.Text);
Session.Add(itemName, itemValue);
// Refresh the Repeater control.
RefreshRepeater();
}
}
protected void RefreshRepeater()
{
// Use the GetEnumerator method to
// iterate through the session-state.
ArrayList values = new ArrayList();
System.Collections.IEnumerator ie = Session.GetEnumerator();
string currentSessionItemName;
while (ie.MoveNext())
{
currentSessionItemName = (string)ie.Current;
values.Add(new SessionDataDisplay(currentSessionItemName,
Session[currentSessionItemName].ToString()));
}
// Bind values ArrayList to Repeater control.
Repeater1.DataSource = values;
Repeater1.DataBind();
}
public class SessionDataDisplay
{
private string _name;
private string _value;
public SessionDataDisplay(string name, string value)
{
this._name = name;
this._value = value;
}
public string Name
{
get { return _name; }
}
public string Value
{
get { return _value; }
}
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
// Determine which item to remove and
// use the Remove method to remove it.
RepeaterItem itemToRemove = e.Item;
string sessionItemToRemove =
((Label)itemToRemove.FindControl("Label1")).Text;
Session.Remove(sessionItemToRemove);
// Refresh the Repeater control.
RefreshRepeater();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>HttpSessionState Example</title>
</head>
<body>
<form id="form1"
runat="server"
defaultbutton="Button1"
defaultfocus="TextBox1">
<div>
Name
<asp:TextBox ID="TextBox1"
runat="server"></asp:TextBox>
<br />
Value
<asp:TextBox ID="TextBox2"
runat="server"></asp:TextBox>
<asp:Button ID="Button1"
runat="server"
OnClick="Button1_Click"
Text="Add" />
<br />
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<br />
SessionState Item Name:
<asp:Label ID="Label1"
runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'/>,
SessionState Item Value:
<asp:Label ID="Label2"
runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Value") %>'/>
<asp:Button ID="RemoveItem"
Text="Remove"
runat="server" />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
' If both name and value are specified
' use the Add method to add the item to session-state.
If (Not String.IsNullOrEmpty(TextBox1.Text) And _
Not String.IsNullOrEmpty(TextBox2.Text)) Then
Dim itemName As String = Server.HtmlEncode(TextBox1.Text)
Dim itemValue As String = Server.HtmlEncode(TextBox2.Text)
Session.Add(itemName, itemValue)
' Refresh the Repeater control.
RefreshRepeater()
End If
End Sub
Protected Sub RefreshRepeater()
' Use the GetEnumerator method to
' iterate through the session-state.
Dim values As ArrayList = New ArrayList()
Dim ie As System.Collections.IEnumerator = Session.GetEnumerator()
Dim currentSessionItemName As String
While (ie.MoveNext())
currentSessionItemName = CType(ie.Current, String)
values.Add(New SessionDataDisplay(currentSessionItemName, _
Session(currentSessionItemName).ToString()))
End While
' Bind values ArrayList to Repeater control.
Repeater1.DataSource = values
Repeater1.DataBind()
End Sub
Public Class SessionDataDisplay
Private _name As String
Private _value As String
Public Sub New(ByVal name As String, ByVal value As String)
Me._name = name
Me._value = value
End Sub
Public ReadOnly Property Name() As String
Get
Return _name
End Get
End Property
Public ReadOnly Property Value() As String
Get
Return _value
End Get
End Property
End Class
Protected Sub Repeater1_ItemCommand(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)
' Determine which item to remove and
' use the Remove method to remove it.
Dim itemToRemove As RepeaterItem = e.Item
Dim sessionItemToRemove As String = _
CType(itemToRemove.FindControl("Label1"), Label).Text
Session.Remove(sessionItemToRemove)
' Refresh the Repeater control.
RefreshRepeater()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>HttpSessionState Example</title>
</head>
<body>
<form id="form1"
runat="server"
defaultbutton="Button1"
defaultfocus="TextBox1">
<div>
Name
<asp:TextBox ID="TextBox1"
runat="server"></asp:TextBox>
<br />
Value
<asp:TextBox ID="TextBox2"
runat="server"></asp:TextBox>
<asp:Button ID="Button1"
runat="server"
OnClick="Button1_Click"
Text="Add" />
<br />
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<br />
SessionState Item Name:
<asp:Label ID="Label1"
runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'/>,
SessionState Item Value:
<asp:Label ID="Label2"
runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Value") %>'/>
<asp:Button ID="RemoveItem"
Text="Remove"
runat="server" />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>