Roles.AddUsersToRole(String[], String) 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将指定的用户添加到指定的角色中。
public:
 static void AddUsersToRole(cli::array <System::String ^> ^ usernames, System::String ^ roleName);public static void AddUsersToRole(string[] usernames, string roleName);static member AddUsersToRole : string[] * string -> unitPublic Shared Sub AddUsersToRole (usernames As String(), roleName As String)参数
- usernames
- String[]
一个字符串数组,其中包含要添加到指定角色的用户名。
- roleName
- String
要将指定的用户名添加到的角色。
例外
              roleName 为空字符串或者包含逗号 (,)。
- 或 -
              usernames 中的一个元素是空字符串或包含逗号 (,)。
- 或 -
              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;
  string[] usersInRole;
  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();
    }
    if (RolesListBox.SelectedItem != null)
    {
      // Show users in role. Bind user list to GridView.
      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
      UsersInRoleGrid.DataSource = usersInRole;
      UsersInRoleGrid.DataBind();
    }
  }
  public void AddUsers_OnClick(object sender, EventArgs args)
  {
    // Verify that a role is selected.
    if (RolesListBox.SelectedItem == null)
    {
      Msg.Text = "Please select a role.";
      return;
    }
    // Verify that at least one user is selected.
    if (UsersListBox.SelectedItem == null)
    {
      Msg.Text = "Please select one or more users.";
      return;
    }
    // Create list of users to be added to the selected role.
    string[] newusers = new string[UsersListBox.GetSelectedIndices().Length];
    for (int i = 0; i < newusers.Length; i++)
    {
      newusers[i] = UsersListBox.Items[UsersListBox.GetSelectedIndices()[i]].Value;
    }
    // Add the users to the selected role.
    try
    {
      Roles.AddUsersToRole(newusers, RolesListBox.SelectedItem.Value);
      // Re-bind users in role to GridView.
      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
      UsersInRoleGrid.DataSource = usersInRole;
      UsersInRoleGrid.DataBind();
    }
    catch (Exception e)
    {
      Msg.Text = e.Message;
    }
  }
  public void UsersInRoleGrid_RemoveFromRole(object sender, GridViewCommandEventArgs args)
  {
    // Get the selected user name to remove.
    int index = Convert.ToInt32(args.CommandArgument);
    string username = ((DataBoundLiteralControl)UsersInRoleGrid.Rows[index].Cells[0].Controls[0]).Text;
    // Remove the user from the selected role.
    try
    {
      Roles.RemoveUserFromRole(username, RolesListBox.SelectedItem.Value);
    }
    catch (Exception e)
    {
      Msg.Text = "An exception of type " + e.GetType().ToString() +
                 " was encountered removing the user from the role.";
    }
    // Re-bind users in role to GridView.
    usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
    UsersInRoleGrid.DataSource = usersInRole;
    UsersInRoleGrid.DataBind();
  }
</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" Rows="8" AutoPostBack="true" /></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" ID="AddUsersButton" runat="server" OnClick="AddUsers_OnClick" /></td>
      </tr>
      <tr>
        <td valign="top">
          Users In Role:</td>
        <td valign="top">
          <asp:GridView runat="server" CellPadding="4" ID="UsersInRoleGrid" AutoGenerateColumns="false"
            GridLines="None" CellSpacing="0" OnRowCommand="UsersInRoleGrid_RemoveFromRole">
            <HeaderStyle BackColor="navy" ForeColor="white" />
            <Columns>
              <asp:TemplateField HeaderText="User Name" >
                <ItemTemplate>
                  <%# Container.DataItem.ToString() %>
                </ItemTemplate>
              </asp:TemplateField>
              <asp:ButtonField Text="Remove From Role" ButtonType="Link" />
            </Columns>
          </asp:GridView>
        </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
  Dim usersInRole() As String
  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
    If Not RolesListBox.SelectedItem Is Nothing Then
      ' Show users in role. Bind user list to GridView.
      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
      UsersInRoleGrid.DataSource = usersInRole
      UsersInRoleGrid.DataBind()
    End If
  End Sub
  Public Sub AddUsers_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    ' Verify that a role is selected.
    If RolesListBox.SelectedItem Is Nothing Then
      Msg.Text = "Please select a role."
      Return
    End If
    ' Verify that at least one user is selected.
    If UsersListBox.SelectedItem Is Nothing Then
      Msg.Text = "Please select one or more users."
      Return
    End If
    ' Create list of users to be added to the selected role.
    Dim newusers(UsersListBox.GetSelectedIndices().Length - 1) As String
    For i As Integer = 0 To newusers.Length - 1
      newusers(i) = UsersListBox.Items(UsersListBox.GetSelectedIndices(i)).Value
    Next
    ' Add the users to the selected role.
    Try
      Roles.AddUsersToRole(newusers, RolesListBox.SelectedItem.Value)
      ' Re-bind users in role to GridView.
      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
      UsersInRoleGrid.DataSource = usersInRole
      UsersInRoleGrid.DataBind()
    Catch e As Exception
      Msg.Text = e.Message
    End Try
  End Sub
  Public Sub UsersInRoleGrid_RemoveFromRole(ByVal sender As Object, ByVal args As GridViewCommandEventArgs)
    ' Get the selected user name to remove.
    Dim index As Integer = Convert.ToInt32(args.CommandArgument)
    Dim username As String = (CType(UsersInRoleGrid.Rows(index).Cells(0).Controls(0), DataBoundLiteralControl)).Text
    ' Remove the user from the selected role.
    Try
      Roles.RemoveUserFromRole(username, RolesListBox.SelectedItem.Value)
    Catch e As Exception
      Msg.Text = "An exception of type " & e.GetType().ToString() & _
                 " was encountered removing the user from the role."
    End Try
    ' Re-bind users in role to GridView.
    usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
    UsersInRoleGrid.DataSource = usersInRole
    UsersInRoleGrid.DataBind()
  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" Rows="8" AutoPostBack="true" /></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" ID="AddUsersButton" runat="server" OnClick="AddUsers_OnClick" /></td>
      </tr>
      <tr>
        <td valign="top">
          Users In Role:</td>
        <td valign="top">
          <asp:GridView runat="server" CellPadding="4" ID="UsersInRoleGrid" AutoGenerateColumns="false"
            GridLines="None" CellSpacing="0" OnRowCommand="UsersInRoleGrid_RemoveFromRole">
            <HeaderStyle BackColor="navy" ForeColor="white" />
            <Columns>
              <asp:TemplateField HeaderText="User Name" >
                <ItemTemplate>
                  <%# Container.DataItem.ToString() %>
                </ItemTemplate>
              </asp:TemplateField>
              <asp:ButtonField Text="Remove From Role" ButtonType="Link" />
            </Columns>
          </asp:GridView>
        </td>
      </tr>
    </table>
  </form>
</body>
</html>
注解
方法 AddUsersToRole 调用默认角色提供程序,以将指定用户与数据源中的指定角色相关联。
如果应用程序使用 SqlRoleProvider 类,则调用 AddUsersToRoles 方法期间执行的数据库更新将在事务中进行。 如果遇到错误(例如已处于指定角色的用户名),则会回滚事务,并且不执行任何更新。
注意
用户名和角色名称不能包含逗号。