Roles.AddUsersToRoles(String[], String[]) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将指定的用户添加到指定的角色中。
public:
static void AddUsersToRoles(cli::array <System::String ^> ^ usernames, cli::array <System::String ^> ^ roleNames);
public static void AddUsersToRoles (string[] usernames, string[] roleNames);
static member AddUsersToRoles : string[] * string[] -> unit
Public Shared Sub AddUsersToRoles (usernames As String(), roleNames As String())
参数
- usernames
- String[]
一个字符串数组,其中包含要添加到指定角色的用户名。
- roleNames
- String[]
一个字符串数组,其中包含要将指定用户名添加到的角色的名称。
例外
roleNames
中的一个角色是空字符串或包含逗号 (,)。
- 或 -
usernames
中的一个用户是空字符串或包含逗号 (,)。
- 或 -
roleNames
包含重复的元素。
- 或 -
usernames
包含重复的元素。
未启用角色管理。
示例
下面的代码示例将一个或多个用户添加到一个或多个角色。 有关启用角色管理的 Web.config 文件的示例,请参阅 Roles。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string[] rolesArray;
MembershipUserCollection users;
public void Page_Load()
{
Msg.Text = "";
if (!IsPostBack)
{
// Bind roles to ListBox.
rolesArray = Roles.GetAllRoles();
RolesListBox.DataSource = rolesArray;
RolesListBox.DataBind();
// Bind users to ListBox.
users = Membership.GetAllUsers();
UsersListBox.DataSource = users;
UsersListBox.DataBind();
}
}
public void AddUsers_OnClick(object sender, EventArgs args)
{
// Verify that at least one user and one role are selected.
int[] user_indices = UsersListBox.GetSelectedIndices();
if (user_indices.Length == 0)
{
Msg.Text = "Please select one or more users.";
return;
}
int[] role_indices = RolesListBox.GetSelectedIndices();
if (role_indices.Length == 0)
{
Msg.Text = "Please select one or more roles.";
return;
}
// Create list of users to be added to the selected roles.
string[] newusers = new string[user_indices.Length];
for (int i = 0; i < newusers.Length; i++)
{
newusers[i] = UsersListBox.Items[user_indices[i]].Value;
}
// Create list of roles to be add the selected users to.
string[] rolesList = new string[role_indices.Length];
for (int i = 0; i < rolesList.Length; i++)
{
rolesList[i] = RolesListBox.Items[role_indices[i]].Value;
}
// Add the users to the selected role.
try
{
Roles.AddUsersToRoles(newusers, rolesList);
Msg.Text = "User(s) added to Role(s).";
}
catch (HttpException e)
{
Msg.Text = e.Message;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Role Membership</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>Role Membership</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td valign="top">Roles:</td>
<td valign="top"><asp:ListBox id="RolesListBox" runat="server" SelectionMode="Multiple"
Rows="8" /></td>
<td valign="top">Users:</td>
<td valign="top"><asp:ListBox id="UsersListBox" DataTextField="Username"
Rows="8" SelectionMode="Multiple" runat="server" /></td>
<td valign="top"><asp:Button Text="Add User(s) to Role(s)" id="AddUsersButton"
runat="server" OnClick="AddUsers_OnClick" /></td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim rolesArray() As String
Dim users As MembershipUserCollection
Public Sub Page_Load()
Msg.Text = ""
If Not IsPostBack Then
' Bind roles to ListBox.
rolesArray = Roles.GetAllRoles()
RolesListBox.DataSource = rolesArray
RolesListBox.DataBind()
' Bind users to ListBox.
users = Membership.GetAllUsers()
UsersListBox.DataSource = users
UsersListBox.DataBind()
End If
End Sub
Public Sub AddUsers_OnClick(sender As Object, args As EventArgs)
' Verify that at least one user and one role are selected.
Dim user_indices() As Integer = UsersListBox.GetSelectedIndices()
If user_indices.Length = 0 Then
Msg.Text = "Please select one or more users."
Return
End If
Dim role_indices() As Integer = RolesListBox.GetSelectedIndices()
If role_indices.Length = 0 Then
Msg.Text = "Please select one or more roles."
Return
End If
' Create list of users to be added to the selected roles.
Dim newusers(user_indices.Length - 1) As String
For i As Integer = 0 To newusers.Length - 1
newusers(i) = UsersListBox.Items(user_indices(i)).Value
Next
' Create list of roles to be add the selected users to.
Dim rolesList(role_indices.Length - 1) As String
For i As Integer = 0 To rolesList.Length - 1
rolesList(i) = RolesListBox.Items(role_indices(i)).Value
Next
' Add the users to the selected role.
Try
Roles.AddUsersToRoles(newusers, rolesList)
Msg.Text = "User(s) added to Role(s)."
Catch e As HttpException
Msg.Text = e.Message
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Role Membership</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>Role Membership</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td valign="top">Roles:</td>
<td valign="top"><asp:ListBox id="RolesListBox" runat="server" SelectionMode="Multiple"
Rows="8" /></td>
<td valign="top">Users:</td>
<td valign="top"><asp:ListBox id="UsersListBox" DataTextField="Username"
Rows="8" SelectionMode="Multiple" runat="server" /></td>
<td valign="top"><asp:Button Text="Add User(s) to Role(s)" id="AddUsersButton"
runat="server" OnClick="AddUsers_OnClick" /></td>
</tr>
</table>
</form>
</body>
</html>
注解
方法 AddUsersToRoles 调用默认角色提供程序,以将指定用户与数据源中的指定角色相关联。
如果应用程序使用 SqlRoleProvider 类,则调用 AddUsersToRoles 方法期间执行的数据库更新将在事务中进行。 如果遇到错误(例如已处于指定角色的用户名),则会回滚事务,并且不执行任何更新。
注意
用户名和角色名称不能包含逗号。