Roles.RemoveUserFromRoles メソッド
アセンブリ: System.Web (system.web.dll 内)
構文
例外の種類 | 条件 |
---|---|
System.ArgumentNullException | roleNames のロールの 1 つは、null 参照 (Visual Basic では Nothing) です。 または username が null 参照 (Visual Basic では Nothing) です。 |
System.ArgumentException | roleNames のロールの 1 つが空の文字列か、またはコンマ (,) を含んでいます。 または username が空の文字列であるか、またはコンマ (,) を含んでいます。 または |
System.Configuration.Provider.ProviderException |
RemoveUserFromRoles メソッドは既定のロール プロバイダを呼び出し、指定されたユーザーをデータ ソースの指定されたロールから削除します。
アプリケーションが SqlRoleProvider クラスを使用するように構成されている場合、RemoveUserFromRoles メソッドの呼び出しによって実行されるデータベースの更新は単一のトランザクションで完了します。指定されたロールにユーザー名が存在しないなどのエラーが発生した場合、トランザクションがロールバックされ、更新は実行されません。
RemoveUserFromRoles メソッドを使用して 1 つ以上のロールからユーザーを削除するコード例を次に示します。ロール管理を有効にする Web.config ファイルの例については、Roles のトピックを参照してください。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <%@ Import Namespace="System.Web.UI" %> <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. users = Membership.GetAllUsers() UsersListBox.DataSource = users UsersListBox.DataBind() End If End Sub Public Sub UsersListBox_OnSelectedIndexChanged(sender As Object, args As EventArgs) ' Bind users to ListBox. rolesArray = Roles.GetRolesForUser(UsersListBox.SelectedItem.Value) RolesListBox.DataSource = rolesArray RolesListBox.DataBind() End Sub Public Sub RemoveUser_OnClick(sender As Object, args As EventArgs) ' Verify that at least a user and at least one role are selected. If UsersListBox.SelectedItem Is Nothing Then Msg.Text = "Please select a user." 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 remove the selected user from. 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 ' Remove the user to the selected roles. Try Roles.RemoveUserFromRoles(UsersListBox.SelectedItem.Value, rolesList) Msg.Text = "User removed from Role(s)." ' Rebind roles to ListBox. rolesArray = Roles.GetRolesForUser(UsersListBox.SelectedItem.Value) RolesListBox.DataSource = rolesArray RolesListBox.DataBind() Catch e As HttpException Msg.Text = e.Message End Try End Sub </script> <html> <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">Users:</td> <td valign="top"><asp:ListBox id="UsersListBox" Rows="8" DataTextField="Username" OnSelectedIndexChanged="UsersListBox_OnSelectedIndexChanged" AutoPostBack="true" runat="server" /></td> <td valign="top">Roles:</td> <td valign="top"><asp:ListBox id="RolesListBox" SelectionMode="Multiple" runat="server" Rows="8" /></td> <td valign="top"><asp:Button Text="Remove User from Roles" id="RemoveUserButton" runat="server" OnClick="RemoveUser_OnClick" /></td> </tr> </table> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Security" %> <%@ Import Namespace="System.Web.UI" %> <script runat="server"> string[] rolesArray; MembershipUserCollection users; public void Page_Load() { Msg.Text = ""; if (!IsPostBack) { // Bind roles to ListBox. users = Membership.GetAllUsers(); UsersListBox.DataSource = users; UsersListBox.DataBind(); } } public void UsersListBox_OnSelectedIndexChanged(object sender, EventArgs args) { // Bind users to ListBox. rolesArray = Roles.GetRolesForUser(UsersListBox.SelectedItem.Value); RolesListBox.DataSource = rolesArray; RolesListBox.DataBind(); } public void RemoveUser_OnClick(object sender, EventArgs args) { // Verify that at least a user and at least one role are 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 remove the selected user from. string[] rolesList = new string[role_indices.Length]; for (int i = 0; i < rolesList.Length; i++) { rolesList[i] = RolesListBox.Items[role_indices[i]].Value; } // Remove the user to the selected roles. try { Roles.RemoveUserFromRoles(UsersListBox.SelectedItem.Value, rolesList); Msg.Text = "User removed from Role(s)."; // Rebind roles to ListBox. rolesArray = Roles.GetRolesForUser(UsersListBox.SelectedItem.Value); RolesListBox.DataSource = rolesArray; RolesListBox.DataBind(); } catch (HttpException e) { Msg.Text = e.Message; } } </script> <html> <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">Users:</td> <td valign="top"><asp:ListBox id="UsersListBox" Rows="8" DataTextField="Username" OnSelectedIndexChanged="UsersListBox_OnSelectedIndexChanged" AutoPostBack="true" runat="server" /></td> <td valign="top">Roles:</td> <td valign="top"><asp:ListBox id="RolesListBox" SelectionMode="Multiple" runat="server" Rows="8" /></td> <td valign="top"><asp:Button Text="Remove User from Roles" id="RemoveUserButton" runat="server" OnClick="RemoveUser_OnClick" /></td> </tr> </table> </form> </body> </html>
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- Roles.RemoveUserFromRoles メソッドのページへのリンク