Roles.AddUserToRoles(String, String[]) 方法

定义

将指定的用户添加到指定的角色中。Adds the specified user to the specified roles.

public:
 static void AddUserToRoles(System::String ^ username, cli::array <System::String ^> ^ roleNames);
public static void AddUserToRoles (string username, string[] roleNames);
static member AddUserToRoles : string * string[] -> unit
Public Shared Sub AddUserToRoles (username As String, roleNames As String())

参数

username
String

要添加到指定角色中的用户名。The user name to add to the specified roles.

roleNames
String[]

一个字符串数组,其中包含要将指定用户名添加到的角色。A string array of roles to add the specified user name to.

例外

roleNames 中的一个角色为 nullOne of the roles in roleNames is null.

- 或 --or-

usernamenullusername is null.

roleNames 中的一个角色是空字符串或包含逗号 (,)。One of the roles in roleNames is an empty string or contains a comma (,).

- 或 --or-

username 为空字符串或者包含逗号 (,)。username is an empty string or contains a comma (,).

- 或 --or-

roleNames 包含重复的元素。roleNames contains a duplicate element.

未启用角色管理。Role management is not enabled.

示例

下面的代码示例将一个用户添加到一个或多个角色。The following code example adds a user to one or more roles. 有关启用角色管理的 Web.config 文件的示例,请参阅 RolesFor an example of a Web.config file that enables role management, see 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 AddUser_OnClick(object sender, EventArgs args)
{
  // Verify that a user and at least one role is selected.

  if (UsersListBox.SelectedItem == null)
  {
    Msg.Text = "Please select a user.";
    return;
  } 

  int[] role_indices = RolesListBox.GetSelectedIndices();

  if (role_indices.Length == 0)
  {
    Msg.Text = "Please select one or more roles.";
    return;
  }


  // 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.AddUserToRoles(UsersListBox.SelectedItem.Value, rolesList);  
    Msg.Text = "User 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" runat="server" /></td>
      <td valign="top"><asp:Button Text="Add User to Role(s)" id="AddUserButton"
                                 runat="server" OnClick="AddUser_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 AddUser_OnClick(sender As Object, args As EventArgs)

  ' Verify that a user and at least one role are selected.

  If UsersListBox.SelectedItem Is Nothing 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 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.AddUserToRoles(UsersListBox.SelectedItem.Value, rolesList)
    Msg.Text = "User 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" runat="server" /></td>
      <td valign="top"><asp:Button Text="Add User to Role(s)" id="AddUserButton"
                                 runat="server" OnClick="AddUser_OnClick" /></td>
    </tr>
  </table>
</form>

</body>
</html>

注解

AddUserToRoles方法调用默认的角色提供程序,以便将指定的用户与数据源中的指定角色关联。The AddUserToRoles method calls the default role provider to associate the specified user with the specified roles at the data source.

如果你的应用程序使用 SqlRoleProvider 类,则在调用方法的过程中执行的数据库更新将在 AddUserToRoles 一个事务中进行。If your application uses the SqlRoleProvider class, the database updates that are performed during the call to the AddUserToRoles method are made within a transaction. 如果遇到错误(如已在指定角色中的用户名),则将回滚该事务,并且不执行任何更新。If an error is encountered, such as a user name that is already in a specified role, the transaction is rolled back and no updates are performed.

备注

用户名和角色名称不能包含逗号。User names and role names cannot contain commas.

适用于