控件的HTML外观很简单,分为两个Label控件:第一个lblOnlineUsersNum表示在线用户数,第二个lblOnlineUsers表示在线用户列表的字符串。我们直接来看代码就可以了。
1 Public Partial Class OnlineUsers
2 Inherits System.Web.UI.UserControl
3
4 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
5
6 If Not IsPostBack Then
7 ''声明在线用户集合
8 Dim altUsersOnline As New ArrayList
9 ''遍历所有用户
10 For Each user As MembershipUser In Membership.GetAllUsers
11 If user.IsOnline Then
12 ''如果用户在线则添加入在线用户集合
13 altUsersOnline.Add(user)
14 End If
15 Next
16
17 Dim strUsersOnline As String = String.Empty
18
19 If altUsersOnline.Count > 0 Then
20 ''如果存在在线用户把第一个用户的用户名付给字符串
21 strUsersOnline = DirectCast(altUsersOnline(0), MembershipUser).UserName
22 End If
23
24 ''便利其余所有在线用户
25 For index As Integer = 1 To altUsersOnline.Count - 1
26 ''将其他在线用户的名字添加到在线用户列表的字符串中
27 strUsersOnline += ", " & DirectCast(altUsersOnline(index), MembershipUser).UserName
28 Next
29
30 lblOnlineUsersNum.Text = Membership.GetNumberOfUsersOnline()
31
32 If Not String.IsNullOrEmpty(strUsersOnline) Then
33 lblOnlineUsers.Text = strUsersOnline
34 Else
35 lblOnlineUsers.Text = "No user has been logged in."
36 End If
37
38 End If
39 End Sub
40
41 End Class
2 Inherits System.Web.UI.UserControl
3
4 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
5
6 If Not IsPostBack Then
7 ''声明在线用户集合
8 Dim altUsersOnline As New ArrayList
9 ''遍历所有用户
10 For Each user As MembershipUser In Membership.GetAllUsers
11 If user.IsOnline Then
12 ''如果用户在线则添加入在线用户集合
13 altUsersOnline.Add(user)
14 End If
15 Next
16
17 Dim strUsersOnline As String = String.Empty
18
19 If altUsersOnline.Count > 0 Then
20 ''如果存在在线用户把第一个用户的用户名付给字符串
21 strUsersOnline = DirectCast(altUsersOnline(0), MembershipUser).UserName
22 End If
23
24 ''便利其余所有在线用户
25 For index As Integer = 1 To altUsersOnline.Count - 1
26 ''将其他在线用户的名字添加到在线用户列表的字符串中
27 strUsersOnline += ", " & DirectCast(altUsersOnline(index), MembershipUser).UserName
28 Next
29
30 lblOnlineUsersNum.Text = Membership.GetNumberOfUsersOnline()
31
32 If Not String.IsNullOrEmpty(strUsersOnline) Then
33 lblOnlineUsers.Text = strUsersOnline
34 Else
35 lblOnlineUsers.Text = "No user has been logged in."
36 End If
37
38 End If
39 End Sub
40
41 End Class
如此我们就实现了一个最简单的用户列表,如果想实现的复杂一些,可以在ASP.NET Profile中定制用户的头像,然后通过头像属性用头像或者ICON的图片和用户名一起表示的方式来显示在线用户,也是很切合实际的功能。